对象属性的描述:writable、enumerable、configurable

  • writable属性
    writable属性是一个布尔值,决定了目标属性的值(value)是否可以被改变。如果原型对象的某个属性的writable为false,那么子对象将无法自定义这个属性。

  • enumerable
    enumerable(可遍历性)返回一个布尔值,表示目标属性在 for..in、Object.keys、JSON.stringify 中是否可遍历。但是可以直接获取它的值。
    注意,for...in循环包括继承的属性,Object.keys方法不包括继承的属性。如果需要获取对象自身的所有属性,不管是否可遍历,可以使用Object.getOwnPropertyNames方法。

  • configurable
    configurable(可配置性)返回一个布尔值,决定了是否可以修改属性描述对象。
    也就是说,configurable为false时,value、writable、enumerable和configurable都不能被修改了。
    注意,writable只有在false改为true会报错,true改为false是允许的。
    至于value,只要writable和configurable有一个为true,就允许改动。
    另外,configurable为false时,直接目标属性赋值,不报错,但不会成功。

出处:https://wangdoc.com/javascript/stdlib/attributes.html#元属性

原文地址:https://www.cnblogs.com/cag2050/p/10530563.html