(1)简介

该方法是直接在对象上定一个新的属性或者修改属性 其返回值为修改的对象

  1. Object.defineProperty(obj, prop, descriptor)

obj 需要定义属性的对象。
prop 需被定义或修改的属性名。
descriptor 需被定义或修改的属性的描述符。

(2)其中特性的理解

image.png
1)Writable 属性
writable 设置为false时,表示 non-writable,属性不能被修改。修改一个 non-writable 的属性不会改变属性的值,同时也不会报异常。
2)Enumerable 属性 :
enumerable 定义了对象的属性是否可以在 for…in 循环和 Object.keys() 中被枚举。
3)configurable属性:
configurable 特性表示对象的属性是否可以被删除,以及除 writable 特性外的其他特性是否可以被修改。

  1. configurable: false 时,不能删除当前属性,且不能重新配置当前属性的描述符(有一个小小的意外:可以把writable的状态由true改为false,但是无法由false改为true),但是在writable: true的情况下,可以改变value的值
  2. configurable: true时,可以删除当前属性,可以配置当前属性所有描述符。