Object.defineProperty()1、作用:该方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象2、创建属性:如果对象中不存在指定的属性,Object.defineProperty()就创建这个属性,当描述符中省略某些字段时,这些字段将使用它们的默认值(拥有布尔值的字段的默认值都是false。value,get和set字段的默认值为undefined);而点运算符添加的普通属性,属性描述符拥有布尔值的字段的默认值都是trueObject.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) // 1console.log(o.propertyIsEnumerable(‘a’)) // trueObject.defineProperty(o3, ‘a’, {enumerable: false})console.log(o.a) // 1console.log(o.propertyIsEnumerable(‘a’)) // falseObject.defineProperties()1、作用:该方法直接在一个对象上定义新的属性或修改现有属性,并返回该对象2、例子:var obj = {};Object.defineProperties(obj, { ‘property1’: { value: true, writable: true }, ‘property2’: { value: ‘Hello’, writable: false } // etc. etc.});