对象

自身

  • Object.keys(obj) 输出对象 自身、可枚举 属性数组(不包括symbol)

  • Objcet.getOwnPropertyNames(obj) 输出对象 自身 的属性的数组(不包括symbol)

  • Object.getOwnPropertySymbols(obj) 返回一个数组,它包含了指定对象 自身属于symbol 的属性。

  • Reflect.ownKeys(obj) 返回对象 自身 的属性数组(包括symbol)

  • Object.entries(obj) 方法返回一个给定对象 自身、可枚举 属性的键值对数组(不包括symbol)

全部

  • for in 对象自身的属性以及原型链上的属性(不包括symbol)

数组

  • for of 只能适用于数组自身属性

属性是否自身拥有

  • 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() 返回对象指定的属性配置。
posted on 2021-05-13 11:30  噬蛇之牙  阅读(52)  评论(0编辑  收藏  举报