Object API

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.
});
    原文作者:Cris
    原文地址: https://segmentfault.com/a/1190000018857415
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞