object.defineProperties(object, descriptors)
作用:除了可以用构造函数和字面量的方式为对象设置属性,也可以使用 object.defineProperties来添加/设置对象属性。
object
必需。 对其添加或修改属性的对象。 这可以是本机 JavaScript 对象或 DOM 对象。
descriptors
必需。 包含一个或多个描述符对象的 JavaScript 对象。 每个描述符对象描述一个数据属性或访问器属性(意思就是对象具有数据属性或者访问器属性)。 详见:数据属性和访问器属性
以下例子给ling 这个对象设置了 数据属性 name 和 访问器属性 setNameWarmingvar ling={};
Object.defineProperties(ling,{
name:{
value:"zzling", //设置该属性的初始值
writable:false, //设置可修改性
enumerable:true, //设置可枚举性
configurable:true, //设置可设置性
},
setNameWarming:{
set:function(newVal){
alert("警告:有人试图用setNameWarming 访问器属性设置name 的值为"+newVal);
this.name=newVal
},
get:function(){
return this.name
},
enumberable:true,
configurable:true
}}
);
ling.setNameWarming="lingggggg" //调用setName 访问器属性(函数),尝试把name 值改为"linggggg"
document.write("ling.name的值:"+ling.name) //因为writable(是否可修改)特性为 false。所以name属性值无法修改,还是返回"ling"