This page was translated from English by the community.Learn more and join the MDN Web Docs community.
TypeError: "x" is not a non-null object(Тип ошибки: "x" не является ненулевым объектом)
Сообщения
TypeError: недопустимый дескриптор свойства {x} (Edge)TypeError: "x" не является ненулевым объектом (Firefox)TypeError: описание свойства должно быть объектом: "x" (Chrome)TypeError: недопустимое значение, используемое в слабом наборе (Chrome)In this article
Тип ошибки
TypeErrorЧто пошло не так?
Объект где-то ожидался и не был предоставлен.null не является объектом и не будет работать. Вы должны обеспечить надлежащий объект в данной ситуации.
Примеры
>Ожидается дескриптор свойства
Когда такие методы, какObject.create() илиobject.defineProperty() иobject.defineProperties() используются, дополнительный параметр дескриптора ожидает объект дескриптора свойства. Если не указать объект (например, просто число), возникнет ошибка:
js
Object.defineProperty({}, "key", 1);// TypeError: 1 is not a non-null objectObject.defineProperty({}, "key", null);// TypeError: null is not a non-null objectДопустимый объект дескриптора свойства может выглядеть следующим образом:
js
Object.defineProperty({}, "key", { value: "foo", writable: false });СлабаяКарта иСлабыйСет объектов требуют ключей объектов
WeakMap andWeakSet объекты хранят ключи объектов. Вы не можете использовать другие типы ключей.
js
var ws = new WeakSet();ws.add("foo");// TypeError: "foo" is not a non-null objectСоздание объекта вместо:
js
ws.add({ foo: "bar" });ws.add(window);