对象中有一些属性是不想让外人所更改,所随意操作的,这个时候我们就用一种手段来保护它,就用到了属性描述符
<script type="text/javascript">
Object.defineProperty(obj,"key",{
enumerable:false;//是否可枚举/遍历
configurable:false;//是否可配置:值为true和false(类似于是否可以使用类似 delete 这样的操作)
writable:false;//是否可写的
value:"static"//值,设置为静态说明不可改变
});
// 方式2:也可以一次指定多个 属性 的配置
Object.defineProperties(this, {
name:{
value:name, // 默认值
writable:false, // 可读写
configurable:false, // 可配置(是否可以使用类似 delete 这样的操作)
enumerable:true // 可枚举(遍历)
},
desc:{
value: function(){
console.log("i'm"+this.name);
}, // 默认值
writable:false, // 可读写
configurable:false, // 可配置(是否可以使用类似 delete 这样的操作)
enumerable:true // 可枚举(遍历)
}
})
}
</script>
属性描述符的set,get方法
set,就是当你给一个东西赋值的时候就是set,
get,就是当你调用这个变量或属性的时候就是get
<script type="text/javascript"> function Student(name,age,phone){ this.age=age; Object.defineProperty(this,"name",{ value:"学生", configurable:false,//可否配置 writable:true,//可写不可写 }); Object.defineProperty(this,"todo",{ value:function(){ configurable:false; console.log(this.name+"去学校"); } }); Object.defineProperty(this,"phone",{ set:function(v){ if (v.length != 11) { alert("