オブジェクト

  • JavaScript のオブジェクトは Ruby でいうクラス
  • インスタンスの生成
today = new Data();      // new コンストラクタ;
  • メソッド呼び出し
today.getDay();      // インスタンス名.メソッド名();
  • インスタンスメソッドとクラスメソッドがある。
  • インスタンス名.プロパティ名 でプロパティ参照
  • インスタンス名.プロパティ名 = 値; でプロパティを設定
  • 同じインスタンスに続けてアクセスするには with 文
with(document) {
    write("<h1>Hello!</h1>");
    write("This is JavaScript.");
}

変数

  • 宣言しなくても使えるけど,明示的に宣言するには:
var v1;
var v2, v3, v4;
var v5 = 10;      // 同時に初期化
  • 数値型,文字列型,ブーリアン型,オブジェクト型 etc.
  • リファレンス型とプリミティブ型
  • 変数名は,アルファベットか _ で始まり,2文字目以降には数字も使える。
  • 予約語は使えない。

予約語

break else new var
case finally return void
chatch for switch while
continue function this with
default if throw
delete in try
do instanceof tpeof

将来のために予約されている語もある:

abstract enum int short
boolean export interface static
bye extends long super
char final native synchronized
class float package throws
const goto private transient
debugger implements protected volatile
double import public

演算子

当たり前のものは省略。

  • インクリメント(++)/デクリメント(–)。前置と後置。
  • 論理演算子: !/&&/||。not/and/or はない。
  • ビット演算子: &(論理積)/|(論理和)/^(排他的論理和)
  • シフト演算子: <<(左シフト)/>>(右算術シフト)/>>>(右論理シフト)。右算術シフトは,符号ビットは保存されるようにシフトされる。
var x = 10;
x >> 1;       // -5
x >>> 1;      // 2147483643
  • typeof演算子:値の型を調べる。

’===’ と ’==’

  • ‘===’ は型も含めて同一でなければ true にならない。
  • ‘==’ は型が違っても構わない。たとえば,数値の 10 と文字列の “10” が true になる。
var n = 10;
var s = "10";

with(document) {
    write("n = ", n, " ; type: ", typeof n, "<br>");
    write("s = ", s, " ; type: ", typeof s, "<br>");
    write("n === s : ", n === s, "<br>");      // false
    write("n == s : ", n == s, "<br>");        // true
}