この記事では主に JavaScript オブジェクト指向プログラミングに関する関連情報を紹介します。必要な方は参考にしてください。
ECMA-262 ではオブジェクトを次のように定義しています。「順序付けされていない属性のコレクション。その属性には基本的な値、オブジェクト、または関数を含めることができます。」
オブジェクトを理解する最も簡単な方法は、オブジェクト インスタンスを作成することです。を作成し、それに属性とメソッドを追加します
var person = new Object(); person.name = "Xulei"; person.age = "23"; person.job = "前端工程师"; person.sayName = function () { alert(this.name); }
次のように記述することもできます
var person = { name: "xulei", age: 23, job: "前端工程", sayName: function () { alert(this.name) } }
属性の種類: データ属性を指定し、その属性にアクセスします
1. データ属性。その動作を説明する 4 つの特性があります。
[構成可能]: 属性を削除によって再定義できるかどうかを示します。変更可能かどうか 属性の特性、または属性をアクセサー属性として変更できるかどうか。デフォルト値は true です。
[Enumerable]: デフォルトの for-in を通じて属性を返すことができるかどうかを示します。値は true です。
[Writable]: 属性が for-in を通じて返されるかどうかを示します。デフォルト値は true です。
[Value]: が含まれます。この属性のデータ値。デフォルト値は未定義です。
var person = { name: "xulei" }
ここで人物オブジェクトが作成され、値は「xulei」です。
属性のデフォルトの特性を変更するには、ECMAScript5 の Object.defineProperty (属性が特定される、属性の名前、記述子オブジェクト)
記述子オブジェクトは構成可能、列挙可能、書き込み可能、値である必要があります
var peron = {} Object.defineProperty(peron, "name", { writable: false,//属性不能被修改 value: "徐磊-xulei" }); alert(peron.name);//徐磊-xulei peron.name = "徐磊"; alert(peron.name);//徐磊-xulei
上記の操作は、非厳密モードの代入操作では無視されます。厳密モードでスローされます。 例外
プロパティが構成不可として定義されると、構成可能に戻すことはできません。
ほとんどの場合、Object.defineProperty() メソッドによって提供されるこれらの高度な機能を利用する必要はありません。しかし、JavaScript を理解するのには非常に役立ちます。
読者は、ie8 ではこの方法を使用しないことをお勧めします。
2. 属性にアクセスします。属性には 4 つの特性があります。
[構成可能]: 属性を再定義するために削除できるかどうか、属性の特性を変更できるかどうかを示します。または属性を変更できるかどうか アクセサー属性に変更されます。デフォルト値は true です。
[Enumerable]: 属性が for-in を通じて返されるかどうかを示します。デフォルト値は true です。読み取り時に呼び出される関数;
[Set]: プロパティの書き込み時に呼び出される関数。
JavaScript ビデオ チュートリアル をご覧ください。