对象
自身
-
Object.keys(obj)
输出对象 自身、可枚举 属性数组(不包括symbol)
-
Objcet.getOwnPropertyNames(obj)
输出对象 自身 的属性的数组(不包括symbol)
-
Object.getOwnPropertySymbols(obj)
返回一个数组,它包含了指定对象 自身属于symbol 的属性。
-
Reflect.ownKeys(obj)
返回对象 自身 的属性数组(包括symbol)
-
Object.entries(obj)
方法返回一个给定对象 自身、可枚举 属性的键值对数组(不包括symbol)
全部
- for in 对象自身的属性以及原型链上的属性(不包括symbol)
数组
属性是否自身拥有
- Object.prototype.hasOwnProperty()
属性是否可枚举
- Object.prototype.propertyIsEnumerable()
扩展(不可增、可改)
- Object.isExtensible() 判断对象是否可扩展。
- Object.preventExtensions() 防止对象的任何扩展。
密封(可增、不可改)
- Object.isSealed() 判断一个对象是否被密封。
- 密封对象是指那些不可 扩展 的,且所有自身属性都不可配置且因此不可删除(但不一定是不可写)的对象
- Object.seal() 防止其他代码删除对象的属性。
冻结(不可增、不可改)
- Object.freeze() 冻结对象:其他代码不能删除或更改任何属性。
- Object.isFrozen() 判断对象是否已经冻结。
添加属性
- Object.defineProperty(obj,keyName,option) 给对象添加多个属性并分别指定它们的配置(属性描述符)
- value 该属性的值(仅针对数据属性描述符有效)
- writable 当且仅当属性的值可以被改变时为true。(仅针对数据属性描述有效)
- get 获取该属性的访问器函数(getter)。如果没有访问器, 该值为undefined。(仅针对包含访问器或设置器的属性描述有效)
- set 获取该属性的设置器函数(setter)。 如果没有设置器, 该值为undefined。(仅针对包含访问器或设置器的属性描述有效)
- configurable 当且仅当指定对象的属性描述可以被改变或者属性可被删除时,为true。
- enumerable 当且仅当指定对象的属性可以被枚举出时,为 true。
Object.defineProperty(myObject, 'myProperty', {
value: 'Hello, World!', // 设置属性的值
writable: true, // 设置属性是否可以被重新赋值
enumerable: true, // 设置属性是否可以被枚举(例如,在for...in循环或Object.keys()中)
configurable: true // 设置属性是否可以被删除或修改其特性
});
属性描述符
- Object.getOwnPropertyDescriptors() 用来获取一个对象的所有 自身 属性的描述符(包括不可枚举)
- Object.getOwnPropertyDescriptor() 返回对象指定的属性配置。