(1)简介
该方法是直接在对象上定一个新的属性或者修改属性 其返回值为修改的对象
Object.defineProperty(obj, prop, descriptor)
obj
需要定义属性的对象。prop
需被定义或修改的属性名。descriptor
需被定义或修改的属性的描述符。
(2)其中特性的理解
1)Writable 属性 :
writable 设置为false时,表示 non-writable,属性不能被修改。修改一个 non-writable 的属性不会改变属性的值,同时也不会报异常。
2)Enumerable 属性 :
enumerable 定义了对象的属性是否可以在 for…in 循环和 Object.keys() 中被枚举。
3)configurable属性:
configurable 特性表示对象的属性是否可以被删除,以及除 writable 特性外的其他特性是否可以被修改。
configurable: false 时,不能删除当前属性,且不能重新配置当前属性的描述符(有一个小小的意外:可以把writable的状态由true改为false,但是无法由false改为true),但是在writable: true的情况下,可以改变value的值
configurable: true时,可以删除当前属性,可以配置当前属性所有描述符。