1.定义:该方法是在对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象。监听对象下的某一个属性,做数据劫持处理。
2.语法:Object.defineProperty(obj, prop, descriptor)
(1) 参一:要定义属性的对象。
(2) 参二:要定义或修改的属性的名称或 Symbol (被监听的属性)。
(3) 参三:要定义或修改的属性描述符(存取描述符:options{getter,setter})。
(4) 返回值:被传递给函数的对象。
let params = {
_name:'zhangsan'
}
Object.defineProperty(params,'name',{
get(){
console.log(5456);
return '用户名:'+this._name
},
set(val){
this._name = val
}
})
params.name = 'lisi'
document.write(params.name);// 用户名:lisi
let obj = {
_name:'zhangsan',
_age:30
}
Object.defineProperties(obj,{
name:{
// configurable是否可以被delete删除,默认为true
configurable:false,
// writable是否可以被修改,默认为true,不可以和set同时存在
writable:false,
// enumerable是否可以被for in 循环,默认为true
enumerable:false
},
age:{
// configurable:false,
// writable:false,
// enumerable:false
get(){
return 'age:'+this._age
},
set(val){
this._age = val
}
}
})
。