JavaScript 对象操作

  Object.defineProperty(obj, prop, descriptor)方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。

  const  freezeObj = Object.freeze(obj), Object.freeze()方法可以冻结一个对象,冻结后,不能给对象freezeObj添加新的属性,不能修改其已有属性的值,不能删除已有的属性,以及不能修改对象已有属性的可枚举性、可配置性、可写性。

  descriptor:

    configurable 可配置性,当且仅当该属性为true时,该属性的描述符才能被改变,同时该属性也能被删除,默认为 true。

    enumerable 当且仅当该属性为true时,该属性才能出现在对象的枚举遍历中。 (for  in) ,  object.keys()。object.keys(obj)会返回一个有给定对象的自身可枚举属性的属性名组成的数组,数组中名的排列顺序和使用 for .... in 循环遍历该对象时返回的顺序一致。

    value 值

    writable 当且仅当为true时,才能被赋值运算符改变。

    get 一个给属性提供getter的方法,如果没有则 getter 为undefined,当访问该属性时该方法会被执行,方法执行时没有参数传入,但会传入this对象。

    set 一个给属性提供setter的方法,如果没有则setter为undefined,当该属性修改时会触发该方法,参数为新的value。

    定义 get 和 set 可以对对象属性的操作进行监听。get ,set 不能与 writable ,value同时定义,数据描述符不能与存取描述符冲突,有些对象上的属性是原型链上继承来的属性。

  

  

原文地址:https://www.cnblogs.com/wust-hy/p/11181798.html