创建对象
var arr={
name:"msx",
age:"22",
sex:"男"
}
Object.getOwnPropertyDescriptor()
方法返回指定对象上一个自有属性对应的属性描述符。
var objId = Object.getOwnPropertyDescriptor(arr,'name');
console.log(objId); //{value: "msx", writable: true, enumerable: true, configurable: true}
————————————————
configurable:false,//能否使用delete、能否需改属性特性、或能否修改访问器属性、,false为不可重新定义,默认值为true
enumerable:false,//对象属性是否可通过for-in循环,flase为不可循环,默认值为true
writable:false,//对象属性是否可修改,flase为不可修改,默认值为true
value:'xiaoming' //对象属性的默认值,默认值为undefined
Object.defineProperty()
会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象
Object.defineProperties(arr,{
age:{
enumerable:false,
writable:false
},
sex:{
enumerable:false,
}
});
for(var key in arr){
console.log(key,arr[key]);
} //name msx
arr.age++;
console.log(arr.age); //22
将writable设置为flase,这时修改arr的age属性的值是不会成功的
遍历中sex,age被设置为不可遍历
这在js中这是不报错的,可以在js中你所需要的部分启用严格模式,就会有错误提示
"use strict";
同时修改多个属性的四大特性
Object.defineProperties(obj,{
属性名:{
特性名:特性值,
...
},
属性名:{
特性名:特性值,
...
},
})