属性描述符

来源:互联网 发布:二本学校当老师 知乎 编辑:程序博客网 时间:2024/06/05 06:50

对象中有一些属性是不想让外人所更改,所随意操作的,这个时候我们就用一种手段来保护它,就用到了属性描述符

<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("                                             
0 0
原创粉丝点击