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