数据属性
数据属性包括:
Configurable: 表示能否通过delete删除属性,从而重新定义属性。默认值是true。
Enumerable:表示能否通过for-in循环返回属性。默认值是true。
Writable: 表示能否修改属性的值。默认值是true。
Value: 包含这个属性的数据值,读取属性的时候从这个位置读,写入属性的时候从这个位置写。默认值是undefined。
如果要修改默认属性,必须使用object.defineProperty()方法。这个方法接收三个参数。
配置是否可修改的属性
var person = {}; Object.defineProperty(person, "name", { writable: false, value: "Nicholas" }); alert(person.name);//Nicholas person.name = "ui"; alert(person.name);//Nicholas
配置是否可删除
var person = {}; Object.defineProperty(person, "name", { configurable: false, value: "Nicholas" }); alert(person.name);//Nicholas delete person.name; alert(person.name);//Nicholas
访问器属性 get set
var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function () { return this._year; }, set: function (newValue) { if (newValue > 2004) { return this._year; this.edition += newValue - 2004; } } }); book.year = 2005; alert(book.edition); //2
定义多个属性
Object.defineProperty(book, { _year: { Value: 2004 }, Year: { get: function () { return this._year; } } });