ECMA-262は、オブジェクトを次のように定義しています。「属性が基本的な値、オブジェクト、または関数を含めることができる順序付けられていない属性のコレクション」。
オブジェクトを理解する最も簡単な方法は、オブジェクトのインスタンスを作成し、プロパティとメソッドを追加することです。
コードコピーは次のとおりです。
var person = new object();
person.name = "xulei";
person.age = "23";
person.job = "フロントエンジニア";
person.sayname = function(){
アラート(this.name);
}
これを書くこともできます
コードコピーは次のとおりです。
var person = {
名前:「Xulei」、
年齢:23、
ジョブ:「フロントエンドプロジェクト」、
sayname:function(){
アラート(this.name)
}
}
1。属性タイプ:データ属性とアクセスの属性
1。データ属性、その動作を説明する4つの特性を持つ
[構成可能]:属性を削除して属性を再定義できるかどうか、属性の特性を変更できるかどうか、または属性をアクセサ属性に変更できるかどうかを示します。
[列挙可能]:属性をfor-inから返すことができるかどうかを示します。デフォルト値は真です
[書き込み可能]:属性を変更できるかどうかを示します、デフォルト値は真です
[値]:このプロパティのデータ値が含まれています。デフォルト値は未定義です
コードコピーは次のとおりです。
var person = {
名前:「Xulei」
}
ここに人オブジェクトが作成され、値値は「Xulei」です
プロパティのデフォルトプロパティを変更するには、ecmascript5のobject.defineProperty(プロパティが配置されているオブジェクト、プロパティの名前、記述子オブジェクト)を使用する必要があります)
記述子オブジェクトは、構成可能、列挙可能、書き込み可能、価値でなければなりません
コードコピーは次のとおりです。
var peron = {}
object.defineProperty(peron、 "name"、{
書き込み:false、//プロパティを変更できません
価値:「Xu Lei-Xulei」
});
アラート(peron.name); // xulei-xulei
peron.name = "xu lei";
アラート(peron.name); // xulei-xulei
上記の操作は非厳格モードで無視され、例外は厳密なモードでスローされます。
プロパティが構成不可能であると定義されると、構成可能に戻すことはできません。
ほとんどの場合、Object.defineProperty()メソッドによって提供されるこれらの高度な機能を利用する必要はありません。しかし、JavaScriptを理解するのに非常に役立ちます。
読者は、この方法をIE8で使用しないことをお勧めします。
2。そのプロパティにアクセスするには、4つの特性があります
[構成可能]:属性を削除して属性を再定義できるかどうか、属性の特性を変更できるかどうか、または属性をアクセサ属性に変更できるかどうかを示します。
[列挙可能]:属性をfor-inから返すことができるかどうかを示します。デフォルト値は真です
[取得]:読み取り時に呼び出される関数
[セット]:属性を作成するときに呼び出される関数