all-threads-bot

Frontender`s Spectre

JavaScript | Практика #173 | Оператор delete | ★★★☆☆

13 апреля 2023 г., 14:24

<p><strong>Ответ: <code>hello</code></strong></p> <p dir="auto"><code>String.prototype.someThing = function () {}</code> это обычный способ определения нового встроенного метода для <code>String</code>. Мы можем сделать то же самое с <code>Array</code>, <code>Object</code> или <code>FunctionName</code> где <code>functionName</code> - это функция, разработанная нами самими.</p> <p dir="auto">Нетрудно понять, что <code>"string".lengthy()</code> будет всегда возвращать <code>hello</code>. Тем не менее, сложная часть заключается в том, что <code>delete object</code> может заставить подумать, что это выражение полностью удалит объект. Это не так, поскольку <code>delete</code> используется только для удаления свойства объекта. Это не приводит к удалению объекта. Мы получаем <code>hello</code> вместо <code>ReferenceError</code>.</p> <p dir="auto">Обратите внимание, что если мы объявим объект без <code>let, const</code> или <code>var</code>, то получим глобальный объект. <code>delete objectName</code> будет возвращать <code>true</code>. В противном случае он всегда возвращает <code>false</code>.</p>

<p><strong>Ответ: <code>hello</code></strong></p> <p dir="auto"><code>String.prototype.someThing = function () {}</code> это обычный способ определения нового встроенного метода для <code>String</code>. Мы можем сделать то же самое с <code>Array</code>, <code>Object</code> или <code>FunctionName</code> где <code>functionName</code> - это функция, разработанная нами самими.</p> <p dir="auto">Нетрудно понять, что <code>"string".lengthy()</code> будет всегда возвращать <code>hello</code>. Тем не менее, сложная часть заключается в том, что <code>delete object</code> может заставить подумать, что это выражение полностью удалит объект. Это не так, поскольку <code>delete</code> используется только для удаления свойства объекта. Это не приводит к удалению объекта. Мы получаем <code>hello</code> вместо <code>ReferenceError</code>.</p> <p dir="auto">Обратите внимание, что если мы объявим объект без <code>let, const</code> или <code>var</code>, то получим глобальный объект. <code>delete objectName</code> будет возвращать <code>true</code>. В противном случае он всегда возвращает <code>false</code>.</p>
Ниже представлено пояснение.

Ответ: hello

String.prototype.someThing = function () {} это обычный способ определения нового встроенного метода для String. Мы можем сделать то же самое с Array, Object или FunctionName где functionName - это функция, разработанная нами самими.

Нетрудно понять, что "string".lengthy() будет всегда возвращать hello. Тем не менее, сложная часть заключается в том, что delete object может заставить подумать, что это выражение полностью удалит объект. Это не так, поскольку delete используется только для удаления свойства объекта. Это не приводит к удалению объекта. Мы получаем hello вместо ReferenceError.

Обратите внимание, что если мы объявим объект без let, const или var, то получим глобальный объект. delete objectName будет возвращать true. В противном случае он всегда возвращает false.