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对象的引用和显示逻辑的实现提供了不少的帮助。我只是一个实习生,这些都是属于我个人的见解。文笔不好多见谅。高手见到望请指点一下。不甚感激!