Object.defindProperty() 修改对象的属性以及属性的特性。
Object.defineProperty(obj, prop, descriptor)
obj
要定义属性的对象。
prop
要定义或修改的属性的名称或 Symbol 。
descriptor
要定义或修改的属性特性,这个参数所有属性(特性)要写在大括号里面。
var obj={
uname:'李',
sex:'男',
tel:'136...8989'
};
Object.defineProperty(obj,'tel',{
value:'136...8899',//修改属性值
writable:false,//对象的该属性是否可以被修改,默认false
enumerable:false,//对象的该属性是否可以被枚举/列举,默认false
configurable:false,//configurable:对象的属性是否可以被删除或对象是否可以再次修改某个属性的特性 ,默认为false
});
obj.tel='136...8866';//修改失败 该属性的writable特性为false不允许修改该属性
var arr=Object.keys(obj);//将Obj的属性获取,以数组的形式返回
console.log(arr);//['uname', 'sex'] 对象的tel属性没有被列举出来,因为上面该属性的enumerable特性为false,不允许被列举
delete obj.tel;//obj对象的tel属性没有被删除,该属性的configurable特性为false,不允许删除
//当我们再次修改obj对象的tel属性就会报错,
Object.defineProperty(obj,'tel',{
value:'136...99',//上面configurable为false,不可以再次修改对象tel属性的特性,再次修改就会报错
});
以上仅是个人的理解,如果有错误之处,还请诸位多多指点。🌟