Skip to content

Property Descriptor

https://www.yuque.com/qinsjs/jsinfo/eyuhot

Object.getOwnPropertyDescriptor(obj, propertyName);

实例:

js
let user = {
  name: "qins",
};

Object.getOwnPropertyDescriptor(user, "name");
// { value: 'qins', writable: true, enumerable: true, configurable: true }
  • writable
    • true 可修改
    • false 只读
  • enumerable
    • true 能出现在循环中
    • false 不会被列出。
  • configurable
    • true 可删除、可修改
    • false 不可以

writable:true 为不可修改。强行修改,普通模式下会忽略,strict 下会报错

其他相关 api

修改:defineProperty

Object.defineProperty(obj, propertyName, descriptor)

如果 属性 不存在,会先创建

多个修改:defineProperties

js
Object.defineProperties(user, {
  name: { value: "张三", writable: false },
  age: { value: "28", writable: false },
  // ...
});

Object.preventExtensions(obj):禁止向对象添加新属性。

Object.seal(obj):禁止添加/删除属性。设置 configurable: false

Object.freeze(obj) 禁止添加/删除/更改属性。 设置 configurable: false, writable: false

Object.isExtensible(obj)

Object.isSealed(obj)

Object.isFrozen(obj)