Object.defineProperty(obj, 'args', options) 给obj对象定义一个新的属性, 或者修改现有属性并直接返回;
obj--- 当前对象
args--- 属性名称
options --- 属性描述符 -- get() : 当读取当前属性的时候执行并返回数据
-- set(): 给当前属性赋值的时候调用执行;
一般可以作为属性限制或者属性合法性验证
...this.end
Object.defineProperty(this, 'end', {
get: () => {
return this.end;
},
set: (val: number) => {
if (val && val <= 100) {
this.end = val;
} else if(val<0){
this.end = 0
}
}
})
Object.defineProperties(obj, options)当同时定义或修改多个属性时使用
obj --- 当前定义对象
options --- 属性描述对象
let obj = {};
Object.defineProperties(obj, {
name:{
value: 'this is value',
configurable: true,
...
},
num: {
get:()=>{
return 5
},
set:(val)=>{
if(...val){
...this.value = val;
}else{
this.value = 10;
}
}
}
})