Thanks to visit codestin.com
Credit goes to developer.mozilla.org

This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

TypeError: "x" is not a non-null object(Тип ошибки: "x" не является ненулевым объектом)

Сообщения

TypeError: недопустимый дескриптор свойства {x} (Edge)
TypeError: "x" не является ненулевым объектом (Firefox)
TypeError: описание свойства должно быть объектом: "x" (Chrome)
TypeError: недопустимое значение, используемое в слабом наборе (Chrome)

Тип ошибки

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 });

СлабаяКарта и СлабыйСет объектов требуют ключей объектов

WeakMap and WeakSet объекты хранят ключи объектов. Вы не можете использовать другие типы ключей.

js
var ws = new WeakSet();
ws.add("foo");
// TypeError: "foo" is not a non-null object

Создание объекта вместо:

js
ws.add({ foo: "bar" });
ws.add(window);

Смотрите также