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)