Object API

Object.defineProperty()

一、做用:該方法會直接在一個對象上定義一個新屬性,或者修改一個對象的現有屬性, 並返回這個對象
二、建立屬性:若是對象中不存在指定的屬性,Object.defineProperty()就建立這個屬性,當描述符中省略某些字段時,這些字段將使用它們的默認值(擁有布爾值的字段的默認值都是false。value,get和set字段的默認值爲undefined);而點運算符添加的普通屬性,屬性描述符擁有布爾值的字段的默認值都是truecode

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});

三、修改屬性:若是屬性已經存在,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()

一、做用:該方法直接在一個對象上定義新的屬性或修改現有屬性,並返回該對象
二、例子:get

var obj = {};
Object.defineProperties(obj, {
  'property1': {
    value: true,
    writable: true
  },
  'property2': {
    value: 'Hello',
    writable: false
  }
  // etc. etc.
});
相關文章
相關標籤/搜索