ES5 のオブジェクトのプロパティは、「データ プロパティ」と「アクセサー プロパティ」の 2 種類に分類できます。
データ属性は通常、データ値を格納するために使用され、set/get 操作に対応し、データ値を直接格納することはできません。
データ属性の特性: 値、書き込み可能、列挙可能、構成可能。
説明: 構成可能: true/false、属性を削除によって削除できるかどうか、属性の特性を変更できるかどうか、属性をアクセサー属性として変更できるかどうか、デフォルトは false です。 : true/false、渡せるかどうか for in ループが返す、デフォルトは false
writable: true/false、属性の値を変更できるかどうか、デフォルトは false;属性の値が設定されていますが、デフォルトは未定義です。
アクセサ属性の特性:
set、get、列挙可能、構成可能。 説明: 構成可能: true/false、属性を削除によって削除できるかどうか、属性の特性を変更できるかどうか、属性をアクセサー属性として変更できるかどうか、デフォルトは false です。 : true/false、渡せるかどうか for in ループが戻ります。デフォルトは false です。
set: 関数、属性値を読み取るときに呼び出される関数。 get: 関数、属性値を変更するときに呼び出される関数。 。
オブジェクトにプロパティを追加するか、既存のプロパティのプロパティを変更するには、Object.defineProperty() または Object.defineproperties() メソッドを使用します。
Object.defineProperty(object, propertyname, descriptor):
パラメータの説明: object:追加するか、属性オブジェクトを変更する必要があります。
propertyname: 属性の名前、文字列形式;
descriptor: 属性の説明、データ属性またはアクセサー属性の特性を設定します。
インスタンス分析:
データ属性:
var emp = { name:'tom' }; Object.defineProperty(emp,'name',{ writable:false }); emp.name = 'jery'; console.log(emp.name);//输出tom,因为已经设置了writable为false Object.defineProperty(emp,'age',{ configurable:false, writable:true, value:22 }); console.log(emp.age);//输出22,因为设置了value为22 emp.age = 25; console.log(emp.age);//输出25,设置了writable为true delete emp.age; console.log(emp.age);//输出25,设置了configurable为false,此属性删除不了
アクセサー属性:
var emp ={
_name:'tom',
_age:20
};
Object.defineProperty(emp,'name',{
get:function(){
return this._name;
}
});
console.log(emp.name);//输出tom,由get方法返回_name的值
emp.name = 'jery';
console.log(emp.name);//输出tom,没有set方法,修改不了_name的值
Object.defineProperty(emp,'age',{
configurable:true,
get:function(){
return this._age;
}
set:function(age){
this._age = age;
}
});
emp.age = 25;
console.log(emp.age)//输出25,emp.age=25是使用set方法将25赋值给_age,emp.age是使用get方法将_age的读取出来
delete emp.age;
console.log(emp.age);//输出undefined,configurable为true,可以使用delete方法将emp.age属性删除
注: アクセサー プロパティは適切に機能します。保護効果は次のとおりです。 get メソッドのみがある場合は、読み取りのみ可能ですが書き込みはできません。逆に、set メソッドのみがある場合は、書き込みのみ可能ですが、読み取りはできません
以上がJavascript オブジェクトのデータ属性とアクセサー属性インスタンスの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。