js修改添加对象属性的ES5方法

3,112 阅读1分钟

方法: 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这个属性无法被删除或者修改
})