ユーザ用ツール

サイト用ツール


javascript:object

JavaScriptのオブジェクト

  • ネイティブオブジェクト - ECMAScriptの実装で用意されているオブジェクト
    • 標準ネイティブオブジェクト - ECMAScriptの仕様で決められているネイティブオブジェクト
  • ビルトインオブジェクト - ECMAScriptの実装で用意され、実行環境から独立して最初から存在するオブジェクト。ネイティブオブジェクトに等しい
    • 標準ビルトインオブジェクト - ECMAScriptの仕様で定義されているビルトインオブジェクト。標準ネイティブオブジェクトと同義
  • ホストオブジェクト - ECMAScriptのホスト環境によって作成されるオブジェクト、プログラムの実行環境に依存する。

たとえばDOMオブジェクトはブラウザという実行環境に依存するため、ネイティブオブジェクトではなく、ホストオブジェクトである。

Objectコンストラクタ

new演算子によって新しいインスタンスを作成する。

// 引数無し、null、undefinedの場合→新しいオブジェクト生成
var obj1 = new Object();
 
// 引数がオブジェクト→引数をそのまま返す
var obj2 = new Object(obj1);       // obj1 === obj2
 
var str1 = new String("hoge");
var str2 = new Object(str1);       // str2 == "hoge" && str1 === str2
 
 
// 引数が文字列や数値→ToObjectして返す
var obj3 = new Object("fuga");     // obj3 instanceof String
var obj4 = new Object(100);        // obj4 instanceof Number
var obj5 = new Object(true);       // obj5 instanceof Boolean

メソッドとプロパティ

メソッドとプロパティは、生成したオブジェクトにいつでも追加できる。

var obj = new Object();
 
// プロパティ追加
obj.hoge = "ホゲ";
print(obj.hoge);        // ホゲ
 
obj.fuga= "ホゲ";
print(obj.fuga);        // ホゲ
 
// メソッド追加
obj.getHogeFuga = function() {
	return this.hoge + this.fuga	
}
print(obj.getHogeFuga());   // ホゲフガ

メソッド内で他のメソッドやプロパティにアクセスするにはthisキーワードを使う。

プロパティにアクセスするのは、. 演算子で直接名前を指定するか、[] 表記を使う。(ECMA-262 5th 11.2.1)

console.log( obj.hoge )
console.log( obj["hoge"] )

console.log( obj.getHogeFuga() );
console.log( obj["getHogeFuga"]() );

[]表記では文字列でプロパティを指定できるので、動的なメソッドディスパッチ・プロパティアクセスが容易である。

オブジェクトリテラル

new演算子を使わず、オブジェクトリテラルを用いてインスタンスを生成できる(ECMA-262 5th 11.1.5)。

var obj = {
    hoge: "ほげ",
    fuga: "ふが",
    getHogeFuga: function() {
        return this.hoge + this.fuga	
    }
};

これは以下の処理と同一の結果となる。

var obj = new Object();
obj.hoge = "ほげ";
obj.fuga = "ふが";
obj.getHogeFuga = function() {
    return this.hoge + this.fuga	
};
javascript/object.txt · 最終更新: 2011/07/06 02:49 by nullpon