TypeError: "x" is not a non-null object

JavaScript 异常 "不是非空对象" 在需要一个对象但未提供时发生。null 不是一个对象,因此不会起作用。

消息

TypeError: Property description must be an object: x (V8-based)
TypeError: Property descriptor must be an object, got "x" (Firefox)
TypeError: Property description must be an object. (Safari)

错误类型

TypeError

哪里出错了?

在某个地方需要一个对象,但未提供。null 不是一个对象,因此不会起作用。你必须在给定情况下提供一个正确的对象。

示例

期望属性描述符

当使用 Object.create()Object.defineProperty()Object.defineProperties() 等方法时,可选的描述符参数需要一个属性描述符对象。如果未提供对象(例如只提供一个数字),则会抛出错误。

js
Object.defineProperty({}, "key", 1);
// TypeError: 1 is not a non-null object

Object.defineProperty({}, "key", null);
// TypeError: null is not a non-null object

一个有效的属性描述符对象可能如下所示:

js
Object.defineProperty({}, "key", { value: "foo", writable: false });

另见