Object() 构造函数

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Object() 构造函数将输入转换为一个对象。它的行为取决于输入的类型。

语法

js
new Object(value)
Object(value)

备注: Object() 可以在带有或者不带有 new 的情况下调用,但有时会产生不同的效果。参见返回值

参数

value

任意值。

返回值

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

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

当通过继承 Object 的类的构造函数中的 super() 隐式调用 Object() 时,它以 new.target.prototype 为原型初始化一个新对象。传递给 super() 的任意值都将被忽略——例如,即使你传递一个数字,构造函数中的 this 值也不会变成 Number 实例。

示例

创建一个新对象

js
const o = new Object();
o.foo = 42;

console.log(o);
// { foo: 42 }

使用 undefined 和 null 类型调用 Object

以下示例在 o 中存储一个空 Object 对象:

js
const o = new Object();
js
const o = new Object(undefined);
js
const o = new Object(null);

获取 BigInt 和 Symbol 的封装对象

当用 new 调用 BigInt()Symbol() 构造函数时会抛出一个错误,以阻止创建封装对象而不是基本类型值的常见错误。为这些类型创建封装对象的唯一方法是使用它们调用 Object()

js
const numberObj = new Number(1);
console.log(typeof numberObj); // "object"

const bigintObj = Object(1n);
console.log(typeof bigintObj); // "object"

const symbolObj = Object(Symbol("foo"));
console.log(typeof symbolObj); // "object"

规范

Specification
ECMAScript® 2025 Language Specification
# sec-object-constructor

浏览器兼容性

BCD tables only load in the browser

参见