Object.defineProperty(obj,‘prop’,descriptor)定义对象中的新属性或者修改原有的属性
- 三个参数必须 ,不能省略
Object.defineProperty(obj, 'name', {
value: 'Ning'
})
console.log(obj.name)
- 属性用 ‘ ’ 抱起来
- 当设置了 writable 属性 ,通过obj.name 无法改变属性值,通过 .defineProperty()可以如果他的特性configurable为true的话,否则不行。
- 利用 .defineProperty()方法定义的熟悉,第三个参数中的 enumerable默认为 false ,不能遍历
delete obj.value 删除对象中的某个属性
var objj = {
name: 'ren'
}
var objo = Object.create(objj, {
age: {
value: 18,
writable: true,
configurable: true,
enumerable: true
}
})
console.log(objj,objo.age)
Object.defineProperties(objj, {
fullName: {
get() {
return this.name + 'aaaa'
},
set(value) {
this.name = value +'fffs'
}
}
})
console.log(objj.fullName)
objj.fullName = 'fsf'
console.log(objj.fullName)