JS学习之聊聊属性

   name:"fzh",

   job:"实习生",

   age:29

}

以上的代码很简单我就定义了一个Person的类型有name、job、age三个字段,好了现在我想添加一些额外的特性(我更喜欢这样叫)比如:

   //让name的为只读的  实现:

Object。defineProperty(Person,"name",{   //方法接受的参数为属性的对象,属性的名称和定义的,定义的特性(JSON

  writable:false,              //定义为只读

  Configurable:false        //定义为不能通过delete关键字删除

});

alert(Person.name); //fzh

Person.name="123";

alert(Person.name);//fzh

delete Person.name;

alert(Person.name); //fzh

执行下来你会发现name属性现在变为只读的和不可删除的。

注解:在JS常用特性:

【Configurable】:是否可以通过delete关键字删除。默认值true

【Enumerable】:是否能通过for  in枚举对象。默认值true

【Writable】:表示是否修改属性的值。默认值true

【value】:设置值。

其他:【get】和【set】属性的读取和赋值

//对前面的age进行get和set的设置

Object。defineProperty(Person,"age",{   

   get:function(){ return age };

   set:function(value){ this.age=value };

});

前面的写法都是通过Object进行单独字段进行设置,也可以进行多个字段的设置:

var book={};

Object.defineProperties(book,{

   name:{ value:fzh,writable:false }//设置为只读的

   job:{value:"实习生"}

   age:{

      get:function(){ return this.age };

      set:function(value){ this.age=value};

   }

});

在这些特性的帮助下JS的属性也显得那样的生动。这对JS对象的引用和显示逻辑的实现提供了不少的帮助。我只是一个实习生,这些都是属于我个人的见解。文笔不好多见谅。高手见到望请指点一下。不甚感激!

上一篇:[Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!


下一篇:linux性能监控利器20个