标签:load share else code 设置 相关 writable nload http
Configurable:
true|false,表示能否通过delete将属性删除,默认为true。当把属性的Configurable设置为false后,该属性不能通过delete删除,并且也无法再将该属性的Configurable设置回true.
Enumerable:true|false。表示属性可否被枚举,默认true。
Writable:true|false。表示属性是否可写,默认true
Value: 属性的值
Configurable:
true|false,表示能否通过delete将属性删除,默认为true。当把属性的Configurable设置为false后,该属性不能通过delete删除,并且也无法再将该属性的Configurable设置回true.
get:function(){} 属性被读取的时候调用
set:function(newValue){} 属性被写入的时候调用
Value: 属性的值
var person={name:”Leo”}
Object.defineProperty(person,”name”,{//设置数据属性
Writable:false;//设置为false,name属性为只读的
Configurable:false //设置为false,则name属性不能通过delete删除
});
Object.defineProperty(person,”name”,{//设置访问器属性
Configurable:false,
set:function(newValue){console.log(newValue),name=newValue;}
});
不可同时设置==数据属性==和==访问器属==性如:writable和set:function(){}
在调用Object.defineProperty()方法时,如果不指定,configurable,enumerable和writable特性默认值都为false。
一旦设置configurable:false,将不可再变回可配置
var person={name:”Leo”,age:18}
Object.defineProperties(person,{
name:{
Writable:true
},
age{
set:function(newValue){console.log(newValue)}
}
});
Object.getOwnPropertyDescriptor方法。以上面的person为例来使用
var descriptor=Object.getOwnPropertyDescriptor(person,”name”);//得到object对象,包含4个特性键值
console.log(descriptor.Value);
console.log(descriptor.Writable);
==注意最后一条==
var man = {
weibo:‘@ydt‘,
_age:null,
get age(){
if(this._age == undefined){
return new Date().getFullYear()-1998;
}else{
return this._age;
}
},
set age(val){
val = +val;//尝试转为数字类型
if(!isNaN(val)&&val>0&&val<150){
this._age = +val;
}else{
throw new Error(‘Incorrect val=‘ + val);
}
}
}
console.log(man.age);//27
man.age = 100;
console.log(man.age);//100
man.age = ‘abc‘;//error:Incorrect val = NaN
上例中,_age和weibo为数据属性,age为访问器属性
标签:load share else code 设置 相关 writable nload http
原文地址:https://www.cnblogs.com/y-dt/p/9381506.html