aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/javascript/reference/errors/no_non-null_object/index.html
blob: 1aa1260c59f575d5e7f325ed4f46f2d65e0bfd13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
---
title: >-
  TypeError: "x" is not a non-null object(Тип ошибки: "x" не является ненулевым
  объектом)
slug: Web/JavaScript/Reference/Errors/No_non-null_object
translation_of: Web/JavaScript/Reference/Errors/No_non-null_object
---
<div>{{JSSidebar("Errors")}}</div>

<h2 id="Сообщения">Сообщения</h2>

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

</pre>

<h2 id="Тип_ошибки">Тип ошибки</h2>

<p>{{jsxref("TypeError")}}</p>

<h2 id="Что_пошло_не_так">Что пошло не так?</h2>

<p>Объект где-то ожидался и не был предоставлен. {{jsxref("null")}} не является объектом и не будет работать. Вы должны обеспечить надлежащий объект в данной ситуации.</p>

<h2 id="Примеры">Примеры</h2>

<h3 id="Ожидается_дескриптор_свойства">Ожидается дескриптор свойства</h3>

<p>Когда такие методы, как {{jsxref("Object.create()")}} или {{jsxref("object.defineProperty()")}} и {{jsxref("object.defineProperties()")}} используются, дополнительный параметр дескриптора ожидает объект дескриптора свойства. Если не указать объект (например, просто число), возникнет ошибка:</p>

<pre class="brush: js example-bad">Object.defineProperty({}, 'key', 1);
// TypeError: 1 is not a non-null object

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

<p>Допустимый объект дескриптора свойства может выглядеть следующим образом:</p>

<pre class="brush: js example-good">Object.defineProperty({}, 'key', { value: 'foo', writable: false });
</pre>

<h3 id="СлабаяКарта_и_СлабыйСет_объектов_требуют_ключей_объектов"><code>СлабаяКарта</code> и <code>СлабыйСет</code> объектов требуют ключей объектов</h3>

<p>{{jsxref("WeakMap")}} and {{jsxref("WeakSet")}} объекты хранят ключи объектов. Вы не можете использовать другие типы ключей.</p>

<pre class="brush: js example-bad">var ws = new WeakSet();
ws.add('foo');
// TypeError: "foo" is not a non-null object</pre>

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

<pre class="brush: js example-good">ws.add({foo: 'bar'});
ws.add(window);
</pre>

<h2 id="Смотрите_также">Смотрите также</h2>

<ul>
 <li>{{jsxref("Object.create()")}}</li>
 <li>{{jsxref("Object.defineProperty()")}}, {{jsxref("Object.defineProperties()")}}</li>
 <li>{{jsxref("WeakMap")}}, {{jsxref("WeakSet")}}</li>
</ul>