Object 对象

js/global_objects/object2026-08-24 19:46:25

本词条探讨的是内置全局变量 Object,包括其构造函数、实例方法和静态方法等。关于对象这个数据类型,参见变量与数据类型章节的 对象类型 条目。

在 JavaScript 中,几乎所有的对象都是 Object 的实例,从 Object.prototype 继承属性(包括方法),尽管这些属性可能被重写。唯一不从 Object.prototype 继承的对象是那些 null 原型对象,或者是从其他 null 原型对象继承而来的对象。

Object 对象上还有一些用于操作对象的静态方法。

Object() 构造函数

当调用或者构造 Object() 构造函数本身时,其返回值是一个对象:

  • 如果该值是 null 或者 undefined,它会生成并返回一个空对象。
  • 如果该值已经是一个对象,则返回该值。
  • 否则,它将返回与给定值对应的类型的对象。例如,传递 BigInt 基本类型会返回一个 BigInt 封装对象。

静态方法

对象原型

  • Object.getPrototypeOf()
    返回指定对象的原型(内部的 [[Prototype]] 属性)。

  • Object.setPrototypeOf()
    设置对象的原型(即内部 [[Prototype]] 属性)。

对象属性

  • Object.defineProperties()
    向对象添加多个由给定描述符描述的命名属性。

  • Object.defineProperty()
    向对象添加一个由给定描述符描述的命名属性。

  • Object.hasOwn()
    如果指定属性是指定对象的自有属性,则返回 true,否则返回 false。如果该属性是继承的或不存在,则返回 false。

  • Object.getOwnPropertyDescriptor()
    返回一个对象的已命名属性的属性描述符。

  • Object.getOwnPropertyDescriptors()
    返回一个包含对象所有自有属性的属性描述符的对象。

  • Object.getOwnPropertyNames()
    返回一个包含给定对象的所有自有可枚举和不可枚举属性名称的数组。

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

  • Object.keys()
    返回一个包含所有给定对象自有可枚举字符串属性名称的数组。

  • Object.values()
    返回包含给定对象所有自有可枚举字符串属性的值的数组。

  • Object.entries()
    返回包含给定对象自有可枚举字符串属性的所有 [key, value] 数组。

创建和复制对象

  • Object.create()
    使用指定的原型对象和属性创建一个新对象。

  • Object.assign()
    将一个或多个源对象的所有可枚举自有属性的值复制到目标对象中。

  • Object.fromEntries()
    从一个包含 [key, value] 对的可迭代对象中返回一个新的对象(Object.entries 的反操作)。

判断相等

  • Object.is()
    比较两个值是否相同。所有 NaN 值都相等(这与 == 使用的 IsLooselyEqual 和 === 使用的 IsStrictlyEqual 不同)。

对象的防止扩展、封闭和冻结

  • Object.preventExtensions()
    防止对象的任何扩展。(防止新属性被添加到对象中)

  • Object.isExtensible()
    判断对象是否可扩展。

  • Object.seal()
    防止其他代码删除对象的属性。(阻止其扩展并且使得现有属性不可配置)

  • Object.isSealed()
    判断对象是否已经封闭。

  • Object.freeze()
    冻结一个对象。(其他代码不能删除或更改其任何属性)

  • Object.isFrozen()
    判断对象是否已经冻结。

实例属性

  • Object.prototype.constructor
    创建该实例对象的构造函数。对于普通的 Object 实例,初始值为 Object 构造函数。其它构造函数的实例都会从它们各自的 Constructor.prototype 对象中继承 constructor 属性。

实例方法

对象原型

  • Object.prototype.isPrototypeOf()
    返回一个布尔值,用于表示该方法所调用的对象是否在指定对象的原型链中。

对象属性

  • Object.prototype.hasOwnProperty()
    返回一个布尔值,用于表示一个对象自身是否包含指定的属性,该方法并不会查找原型链上继承来的属性。

  • Object.prototype.propertyIsEnumerable()
    返回一个布尔值,指示指定属性是否是对象的可枚举自有属性。

转化为原始值

  • Object.prototype.toLocaleString()
    调用 toString() 方法。

  • Object.prototype.toString()
    返回一个代表该对象的字符串。

  • Object.prototype.valueOf()
    返回指定对象的基本类型值。

参考资料

Object
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object

本页目录