例1:var fe={dom
name:'leony',
$age:null,
get age(){
if(this.$age == undefined){ //this.$age == undefined 或 this.$age == null
return new Date().getFullYear()-1989;
}else{
return this.$age;
}
},
set age(val){
val = +val; //数字转换,若为非数字会转为NaN;
if(!isNaN(val)&&val>0&&val<150){
this.$age = +val;
}else{
throw new Error("Incorrect val = "+val);
}
}
}
console.log(fe.age)
fe.age='aaa'; //调取 fe 函数的 set 方法
console.log(fe.age)函数
例2:var person={};
Object.defineProperties(person,{ // Object.defineProperties 建立多个对象属性;
title:{value:"fe",enumerable:true},
corp:{value:"baba",enumerable:true},
salary:{value:30000,enumerable:true,writable:true},
luck:{
get:function(){
return Math.random()>0.5?"good":"bad"
}
},
promote:{
set:function(level){
this.salary*=1+level*0.1;
}
}
})
console.log(Object.getOwnPropertyDescriptor(person,"title"));
console.log(person.salary);
console.log(person.luck);
person.promote=2;
console.log(person.salary);ui
Object.defineProperty(obj,"属性",{定义方法});this
定义方法:enumerable:是否可枚举,影响 for in 方法,为"false"时不能被 for in 查找spa
writable:是否可被修改
prototype
configurable:是否可被 delete 方法删除对象
Object.getOwnPropertyDescriptor(object,propertyname) : 获取指定对象的自身属性描述符。自身属性描述符是指直接在对象上定义(而非从对象的原型继承)的描述符继承
object 必需。 包含属性的对象。ip
propertyname 必需。 属性的名称。ci