方法: Object.defineProperty(obj,prop,descriptor)
obj=>要修改的对象;
prop=>要修改的属性名;
descriptor=>操作属性,以{}对象的形式存在;
descriptor有四个值{
value:设置属性的值 默认为undefined
writable:值是否可以重写。true|false 默认为false
enumerble:目标属性是否可以被枚举。true|false 默认为false
configurable:目标属性是否可以被删除或是否可以再次修改特性true|false 默认为false
}
实例:
var data = {
id: 1,
name: '小米',
price: 1999,
num: 2000
}
1.给data对象添加一个color属性,并给他赋值为red
Object.defineProperty(data, 'color', {
value: 'red',
enumerble: false (添加color属性时,这个属性默认为false,所有默认无法循环出这个属性,如要循环出来改成true即可)
})
2.修改data对象的name属性值,让他为'华为'
Object.defineProperty(data, 'name', {
value: '华为'
})
3. 设置data对象的id不可被修改
Object.defineProperty(data, 'id', {
writable: false
})
data.id = 2;//失效
data.id还是等于1
4.设置data对象的num属性不可被枚举(循环出来)
Object.defineProperty(data, 'num', {
enumerble: false //不可以被枚举(不可以被循环出来)
})
5.设置data对象的属性值是否可以被删除或者被再次修改
Object.defineProperty(data, 'id', {
configurable: false //设置id这个属性无法被删除或者修改
})