diff options
Diffstat (limited to 'files/ru/web/javascript/reference/operators/delete/index.html')
-rw-r--r-- | files/ru/web/javascript/reference/operators/delete/index.html | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/files/ru/web/javascript/reference/operators/delete/index.html b/files/ru/web/javascript/reference/operators/delete/index.html index 2edf33b67e..d7722fa829 100644 --- a/files/ru/web/javascript/reference/operators/delete/index.html +++ b/files/ru/web/javascript/reference/operators/delete/index.html @@ -64,18 +64,18 @@ delete <em>property</em> // удаляет свойства глобальног <p><code>delete</code> эффективен только применительно к свойствам объектов. Он не оказывает никакого влияния на имена переменных и функций.<br> Присвоение значения свойству без указания объекта (без оператора var) иногда неверно характеризуется, как глобальная переменная, (например <code>x = 5</code>). На самом деле происходит присвоение значения свойству глобального объекта.</p> -<p><code>delete</code> не может удалить определенные свойства встроенных объектов (таких как Object, Array, Math и так далее). В спецификации ECMA-262 они обозначены как <em>DontDelete.</em></p> +<p><code>delete</code> не может удалить определённые свойства встроенных объектов (таких как Object, Array, Math и так далее). В спецификации ECMA-262 они обозначены как <em>DontDelete.</em></p> -<pre class="brush: js">x = 42; // создает свойство x в глобальном объекте +<pre class="brush: js">x = 42; // создаёт свойство x в глобальном объекте var y = 43; // объявляет новую переменную, y myobj = {}; -myobj.h = 4; // создает свойство h в myobj -myobj.k = 5; // создает свойство k в myobj +myobj.h = 4; // создаёт свойство h в myobj +myobj.k = 5; // создаёт свойство k в myobj delete x; // возвращает true (x - свойство глобального объекта и может быть удалено) delete y; // возвращает false (delete не влияет на имена переменных) -delete Math.PI; // возвращает false (delete не влияет на определенные встроенные свойства) -delete myobj.h; // возвращает true (свойства, определенные пользователем могут быть удалены) +delete Math.PI; // возвращает false (delete не влияет на определённые встроенные свойства) +delete myobj.h; // возвращает true (свойства, определённые пользователем могут быть удалены) with(myobj) { delete k; // возвращает true (эквивалентно delete myobj.k) @@ -89,7 +89,7 @@ delete myobj; // возвращает true (myobj это свойство г Foo.prototype.bar = 42; var foo = new Foo(); delete foo.bar; // возвращает true, но безрезультатно, так как bar - наследуемое свойство -alert(foo.bar); // выводит 42, свойство все еще наследуется +alert(foo.bar); // выводит 42, свойство все ещё наследуется delete Foo.prototype.bar; // удаляет свойство из прототипа alert(foo.bar); // выводит "undefined", свойство больше не наследуется</pre> @@ -106,7 +106,7 @@ if (3 in trees) { // этот участок кода не выполнится }</pre> -<p>Если Вы хотите, чтобы элемент массива существовал, но имел значение undefined, используйте значение <code>undefined</code> вместо оператора <code>delete</code>. В следующем примере, trees{{ mediawiki.external(3) }} принимает значение undefined, но элемент массива все еще существует:</p> +<p>Если Вы хотите, чтобы элемент массива существовал, но имел значение undefined, используйте значение <code>undefined</code> вместо оператора <code>delete</code>. В следующем примере, trees{{ mediawiki.external(3) }} принимает значение undefined, но элемент массива все ещё существует:</p> <pre class="brush: js">var trees = ["redwood","bay","cedar","oak","maple"]; trees[3]=undefined; @@ -116,9 +116,9 @@ if (3 in trees) { <h2 id="Проблема_кроссбраузерности">Проблема кроссбраузерности</h2> -<p>Несмотря на то, что стандарт ECMAScript оставляет порядок итерации по свойствам объектов на усмотрение реализующей стороны, может оказаться так, что все основные браузеры поддерживают порядок итерации, основанный на принципе "свойство добавленное в объект раньше идет раньше" (по крайней мере для свойств не находящихся в прототипе). Однако, в случае с Internet Explorer, когда кто-нибудь использует <code>delete</code> с каким-либо свойством, это приводит к некоторым неожиданным результатам, заставляя другие браузеры отказаться от использования простых объектов, таких как литералы объектов, в качестве ассоциативных массивов. В Internet Explorer, когда значение свойства установлено в undefined, после удаления этого свойства, если кто-нибудь позже добавит свойство с таким же именем, оно окажется в своей <em>старой</em> позиции, а не в конце итерационной последовательности, как ожидается.</p> +<p>Несмотря на то, что стандарт ECMAScript оставляет порядок итерации по свойствам объектов на усмотрение реализующей стороны, может оказаться так, что все основные браузеры поддерживают порядок итерации, основанный на принципе "свойство добавленное в объект раньше идёт раньше" (по крайней мере для свойств не находящихся в прототипе). Однако, в случае с Internet Explorer, когда кто-нибудь использует <code>delete</code> с каким-либо свойством, это приводит к некоторым неожиданным результатам, заставляя другие браузеры отказаться от использования простых объектов, таких как литералы объектов, в качестве ассоциативных массивов. В Internet Explorer, когда значение свойства установлено в undefined, после удаления этого свойства, если кто-нибудь позже добавит свойство с таким же именем, оно окажется в своей <em>старой</em> позиции, а не в конце итерационной последовательности, как ожидается.</p> -<p>Поэтому, если Вы хотите симулировать упорядоченный ассоциативный массив в кроссбраузерной среде, вам придется либо использовать два отдельных массива (один для ключей и один для значений), либо построить массив из объектов с одним свойством и так далее.</p> +<p>Поэтому, если Вы хотите симулировать упорядоченный ассоциативный массив в кроссбраузерной среде, вам придётся либо использовать два отдельных массива (один для ключей и один для значений), либо построить массив из объектов с одним свойством и так далее.</p> <h2 id="Specification" name="Specification">Внешние ссылки</h2> |