1.1 Object.defineProperty
这个方法接收3个参数,属性所在对象,属性名字,描述符对象。描述符对象包含4种类:configurable,enumerable,writable,value。尤其注意configurable属性如果改为false后再代码后面再次改动会抛出错误。
var person ={} Object.defineProperty{Person,"name",{ writable:false, value:"frose" }); alert(Person.name) //"frose"
1.2 Object.defineProperties
如1.1类似,该方法可一次定义多个属性。接收2个对象参数,其一是要添加和修改属性的对象,其二与第一个对象中要添加/修改的属性一一对应。定义一个book对象,包含2个数据属性(_year,edition)
和一个访问器属性(year)。访问器只能通过对象方法访问。(get/set)
var book={} Object.defineProperties(book,{ _year:{ writable:true, value:2019), edition:{ writable:true, value:1), year:{ get:function(){ return this._year; }, set:function(newValue){ if(newValue >2019 ){ this._year=newValue; this.edition= newValue-2019; } } } });