js Object 对象 属性和方法

MDN Object

  • Object.keys 返回对象的自身可枚举属性组成的数组
  • Object.values
  • Object.entries

Object.fromEntries(entries)

  • Object.getOwnPropertyNames()
    包括不可枚举属性但不包括 Symbol 值作为名称的属性
    返回数组
  • Object.getOwnPropertySymbols()

propertyIsEnumerable 属性是否可枚举

toString

[object 构造函数]

valueOf 原始值

当遇到需要对象的原始值时,JavaScript 会自动调用它
每个内置的核心对象都会覆盖此方法以返回适当的值。如果对象没有原始值,则 valueOf 将返回对象本身。

对象 返回值
Array 返回数组对象本身。
Boolean 布尔值。
Date 存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC。
Function 函数本身。
Number 数字值。
Object 对象本身。这是默认情况。
String 字符串值。
Math 和 Error 对象没有 valueOf 方法。

使用 valueOf 将内置对象转换为原始值

toLocaleString

被用于派生对象为了特定语言环境的目的而重载使用

hasOwnProperty / Object.hasOwn 判断对象是否具备属性

Object.hasOwn 意图取代 hasOwnProperty

Object.assign() 对象拼接

  • target
  • sources

针对 Object.hasOwnProperty() 返回 true 的属性
相同属性,后者覆盖前者
注:不会完整复制描述信息,如this

Object.create() 基于已有对象(原型)创建

第二个参数可额外配置属性

Object.defineProperty() / Object.defineProperties() 新增/修改属性

  • obj
  • prop / props
  • 属性描述符
    • configurable 可改可删 默认false
    • enumerable 可枚举属性 默认false
    • value
    • writable
    • get
    • set

Object.getOwnPropertyDescriptor(obj, prop) 获取属性描述符对象

Object.getOwnPropertyDescriptors() 获取所有属性的

复制对象

const p1 = {
  a: 'y',
  b: 'b',
  get name() {
    return `${this.a} ${this.b}`
  }
}
const descriptions = Object.getOwnPropertyDescriptors(p1)
const  p2 = Object.defineProperties({}, descriptions)

p2.a = 'z'
p2.name // z d

Object.preventExtensions 阻止扩展

不可新增属性

Object.isExtensible()
Object.preventExtensions,Object.seal 或 Object.freeze 方法都可以标记一个对象为不可扩展

Object.seal() 封闭一个对象

不可新增属性,不可修改配置

Object.isSealed()

Object.freeze() 冻结对象

不可新增属性,不可修改配置,不可修改值(配置可写的情况下)

Object.isFrozen()

Object.is()

  • 值相等
  • 都是 undefined
  • 都是 null
  • 都是 +0
  • 都是 -0
  • 都是 NaN

== 运算符在判断相等前对两边的变量(如果它们不是同一类型)进行强制转换(这种行为将 "" == false 判断为 true),而 Object.is 不会强制转换两边的值
=== 运算符(也包括 == 运算符)将数字 -0 和 +0 视为相等,而将 Number.NaN 与 NaN 视为不相等

Object.getPrototypeOf() 获取原型

Object.setPrototypeOf() 设置原型

isPrototypeOf 是否存在于另一个对象的原型上

你可能感兴趣的:(#,JavaScript,javascript,前端,开发语言)