给对象添加属性:
<script>
let person = {
name : '张三',
sex : '男'
}
Object.defineProperty(person,'age',{
value : 18
})
console.log(person)
</script>
控制台查看:
但是添加的属性是不能被遍历的:
但是如果你想又使用defineProperty添加属性, 又想遍历, 那么就在这个defineProperty的第三个参数中添加字段: enumerable (是否可以枚举)
let person = {
name : '张三',
sex : '男'
}
Object.defineProperty(person,'age',{
value : 18,
enumerable : true
})
console.log(person)
但是这个又会引来另外一个问题, 这个添加的字段虽然可以被遍历, 但是不能被修改:
这个时候又需要添加另外一个参数:
writable: true
let person = {
name : '张三',
sex : '男'
}
Object.defineProperty(person,'age',{
value : 18,
enumerable : true,
writable : true
})
console.log(person)
同时想要让这个数据可以被正常删除, 就需要添加 configurable键值对
如果是configurable : true则表示可以删除, 反之不能删除