js中的Object.defineProperty()和defineProperties()

时间: 2019-04-13阅读: 32标签: object

Object.defineProperty()

1、作用:该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象
2、创建属性:如果对象中不存在指定的属性,Object.defineProperty()就创建这个属性,当描述符中省略某些字段时,这些字段将使用它们的默认值(拥有布尔值的字段的默认值都是false。value,get和set字段的默认值为undefined);而点运算符添加的普通属性,属性描述符拥有布尔值的字段的默认值都是true

Object.defineProperty(o1,"a",{value :1});
//等价于
Object.defineProperty(o1,"a",{value : 1,
                        writable : false,
                        configurable : false,
                        enumerable : false});
                    
let o2 = {};
o2.a = 1;
//等价于
Object.defineProperty(o2,"a",{value : 1,
                        writable : true,
                        configurable : true,
                        enumerable : true});

3、修改属性:如果属性已经存在,Object.defineProperty()将尝试根据描述符中的值以及对象当前的配置来修改这个属性

let o3 = {}
o3.a = 1;
console.log(o.a) // 1
console.log(o.propertyIsEnumerable('a')) // true
Object.defineProperty(o3, 'a', {enumerable: false})
console.log(o.a) // 1
console.log(o.propertyIsEnumerable('a')) // false


Object.defineProperties()

1、作用:该方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象
2、例子:

var obj = {};
Object.defineProperties(obj, {
  'property1': {
    value: true,
    writable: true
  },
  'property2': {
    value: 'Hello',
    writable: false
  }
  // etc. etc.
});

内容以共享、参考为目的,请勿用于商业用途。其版权归原作者所有,如有侵权,请与小编联系,情况属实将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全