ホームページ > 記事 > ウェブフロントエンド > Javascriptオブジェクトを詳しく解説_基礎知識
オブジェクトの作成
•オブジェクトの直接数量
var o = { foo : "bar" }
•コンストラクター
var o = new Object();
•プロトタイプの継承
var p = Object.create(o);
クラスの継承
JavaScript オブジェクトには独自のプロパティと継承されたプロパティがあります。
•オブジェクト o の属性 x をクエリする場合、まず o の属性 x を検索します。見つからない場合は、x またはプロトタイプが null のオブジェクトが見つかるまで、o のプロトタイプ オブジェクトの x 属性を検索します。 >
•オブジェクトoのx属性に値を代入する際、oが既に自身の属性xを持っている場合は、oに属性xが存在しない場合はxの値を変更し、oに対してx属性を作成して代入します。値•つまり、プロトタイプチェーンはクエリを実行する場合にのみ機能します。
var O = { x : 1 }; function P() { this.y = 2; } P.prototype = O; var t = new P(); console.log(t); console.log('x' in t);//true console.log(t.hasOwnProperty('x'));//false
オブジェクトのプロパティ
•オブジェクトのプロパティをトラバースする
for..in を使用してオブジェクトのプロパティを反復処理できます
したがって、hasOwnProperty を使用すると、それがオブジェクト独自のプロパティであるかどうかを判断できます。
•オブジェクト属性の特徴
Object.getOwnPropertyDescriptor() を使用して、オブジェクトの特定のプロパティの記述子を取得します
たとえば
var o = { foo : 'bar' } Object.defineProperty(o, "foo", { writable : false }); o.foo = 'world'; console.log(o.foo);//仍然输出bar
たとえば
配列の長さなどの属性の列挙は false なので、
for (p in Array) { console.log(p); }
構成可能性 (configurable) は、変更可能なプロパティの構成可能性と列挙可能性を示します
これらの構成プロパティは、Object.defineProperties を使用して定義できます。
Object.defineProperty(o, "foo", { 書き込み可能 : false });
Set はオブジェクトのプロパティを設定するメソッドを表します
var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function () { console.log('get year'); return this._year; }, set: function (newValue) { console.log('set year'); if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book.year = 2005;//控制台输出‘set year' console.log(book.year);//控制台输出‘get year'和year的值
オブジェクトメソッド
toString はオブジェクトを文字列に変換します。デフォルトの変換は [object Object] のようなものになるため、json 形式に変換する必要がある場合は、JSON.stringifyを使用できます。
valueOf は、オブジェクトを他の型に変換する必要がある場合に使用されます。繰り返しになりますが、デフォルトの変換については特に言うことはありません。
実行可能オブジェクト
function bar(o) { var f = function() { return "Hello World!"; } o.__proto__ = f.__proto__; f.__proto__ = o; return f; } var o = { x: 5 }; var foo = bar(o); console.log(foo()); console.log(foo.x); console.log(typeof foo);//function