diff options
| author | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:51:05 +0100 |
|---|---|---|
| committer | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:51:05 +0100 |
| commit | c058fa0fb22dc40ef0225b21a97578cddd0aaffa (patch) | |
| tree | df20f8b4c724b61cb9c34cdb450a7ac77d690bd0 /files/ru/web/javascript/reference/global_objects/proxy/handler/set | |
| parent | 8260a606c143e6b55a467edf017a56bdcd6cba7e (diff) | |
| download | translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.gz translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.bz2 translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.zip | |
unslug ru: move
Diffstat (limited to 'files/ru/web/javascript/reference/global_objects/proxy/handler/set')
| -rw-r--r-- | files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html b/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html deleted file mode 100644 index 88b030ecc4..0000000000 --- a/files/ru/web/javascript/reference/global_objects/proxy/handler/set/index.html +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: handler.set() -slug: Web/JavaScript/Reference/Global_Objects/Proxy/handler/set -tags: - - Прокси - - метод -translation_of: Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/set ---- -<div>{{JSRef}}</div> - -<p><span id="result_box" lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">Метод <strong>handler.set()</strong> является ловушкой для установки </span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">значения </span></span><span id="result_box" lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">свойств</span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">у</span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">.</span></span></p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="brush: js notranslate">var p = new Proxy(target, { - set: function(target, property, value, receiver) { - } -}); -</pre> - -<h3 id="Параметры">Параметры</h3> - -<p><span id="result_box" lang="ru"><span>Следующие параметры передаются методу </span></span><code>set()</code> <span lang="ru"><span>.</span> </span><code>this</code><span lang="ru"><span> привязан к обработчику</span></span></p> - -<dl> - <dt><code>target</code></dt> - <dd>Исходный обьект, который проксируется.</dd> - <dt><code>property</code></dt> - <dd><span id="result_box" lang="ru"><span>Имя свойства, в которое устанавливается значение </span></span><code>value</code><span lang="ru"><span>.</span></span></dd> - <dt><code>value</code></dt> - <dd><span id="result_box" lang="ru"><span>Значение, устанавливаемое в свойство </span></span><code>property</code><span lang="ru"><span>.</span></span></dd> - <dt><code>receiver</code></dt> - <dd><span id="result_box" lang="ru"><span>Объект, которому первоначально было присвоено задание.</span> <span>Обычно это сам прокси.</span> <span>Но обработчик </span></span><code>set()</code><span lang="ru"><span> также может быть вызван косвенно, через цепочку прототипов или различными другими способами.</span><br> - <span>Например, предположим, что скрипт выполняет </span></span><code><var>obj</var>.name = "jen"</code><span lang="ru"><span>, при этом </span></span><code><var>obj</var></code><span lang="ru"><span> не является прокси и не имеет собственного свойства </span></span><code>.name</code><span lang="ru"><span>, но имеет прокси в цепочке прототипов.</span> Б<span>удет вызван обработчик прокси </span></span><code>set()</code><span lang="ru"><span> , а </span></span><code><var>obj</var></code><span lang="ru"><span> будет передан в качестве получателя.</span></span></dd> - <dd></dd> -</dl> - -<h3 id="Возвращаемые_результаты">Возвращаемые результаты</h3> - -<p>Метод <code>set</code> <span id="result_box" lang="ru"><span>должен возвращать boolean значение</span></span>.</p> - -<ul> - <li>Возвращает <code>true</code>, если <span id="result_box" lang="ru"><span>присвоение выполнено успешно</span></span>.</li> - <li>Если метод <code>set()</code> возвращает <code>false</code>, <span id="result_box" lang="ru"><span>а присваивание произошло в коде строгого режима, то будет выброшена</span></span> {{jsxref("TypeError")}}.</li> -</ul> - -<h2 id="Описание">Описание</h2> - -<p>Метод <code><strong>handler.set</strong></code> <span id="result_box" lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">является ловушкой для установки </span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">значения </span></span><span id="result_box" lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">свойств</span></span><span lang="ru"><span title="The handler.set() method is a trap for setting a property value. -">у</span></span>.</p> - -<h3 id="Перехват">Перехват</h3> - -<p>Эта ловушка может перехватывать следующие операции:</p> - -<ul> - <li>Установка значения свойству: <code>proxy[foo] = bar</code> and <code>proxy.foo = bar</code></li> - <li>Установка значения наследованному свойству: <code>Object.create(proxy)[foo] = bar</code></li> - <li>{{jsxref("Reflect.set()")}}</li> -</ul> - -<h3 id="Инварианты">Инварианты</h3> - -<p>Если нарушены следующие инваринаты, то proxy выбросит {{jsxref("TypeError")}}:</p> - -<ul> - <li><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Невозможно изменить значение свойства так, чтобы оно отличалось от значения соответствующего свойства целевого объекта, если соответствующее свойство целевого объекта не является доступным для записи и не настраиваемым свойством данных.</span></span></span></li> - <li><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Невозможно установить значение свойства, если соответствующее свойство целевого объекта является неконфигурируемым свойством средства доступа, для которого в качестве атрибута [[Set]] указано значение undefined.</span></span></span></li> - <li><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>В строгом режиме при возврате из обработчика </span></span></span><code>set()</code><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span> значения </span></span></span><code>false</code><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>, будет выброшено исключение {{jsxref ("TypeError")}}</span></span></span>.</li> -</ul> - -<h2 id="Примеры">Примеры</h2> - -<p><span class="VIiyi" lang="ru"><span class="ChMk0b JLqJ4b"><span>Следующий код перехватывает установку значения свойству</span></span></span><span lang="ru"><span>.</span></span></p> - -<pre class="brush: js notranslate">var p = new Proxy({}, { - set: function(target, prop, value, receiver) { - target[prop] = value - console.log('property set: ' + prop + ' = ' + value) - return true - } -}) - -console.log('a' in p) // false - -p.a = 10 // "property set: a = 10" -console.log('a' in p) // true -console.log(p.a) // 10 -</pre> - -<h2 id="Specifications">Specifications</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Спецификация</th> - <th scope="col">Статус</th> - <th scope="col">Комментарий</th> - </tr> - <tr> - <td>{{SpecName('ES2015', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}</td> - <td>{{Spec2('ES2015')}}</td> - <td>Initial definition.</td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-proxy-object-internal-methods-and-internal-slots-set-p-v-receiver', '[[Set]]')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2> - -<div>{{CompatibilityTable}}</div> - -<div id="compat-desktop"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Chrome</th> - <th>Firefox (Gecko)</th> - <th>Internet Explorer</th> - <th>Opera</th> - <th>Safari</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatChrome("61")}}</td> - <td>{{CompatGeckoDesktop("18")}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatSafari("10.1")}}</td> - </tr> - </tbody> -</table> -</div> - -<div id="compat-mobile"> -<table class="compat-table"> - <tbody> - <tr> - <th>Feature</th> - <th>Android</th> - <th>Chrome for Android</th> - <th>Firefox Mobile (Gecko)</th> - <th>IE Mobile</th> - <th>Opera Mobile</th> - <th>Safari Mobile</th> - </tr> - <tr> - <td>Basic support</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatGeckoMobile("18")}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - <td>{{CompatUnknown}}</td> - </tr> - </tbody> -</table> -</div> - -<h2 id="Смотрите_также">Смотрите также</h2> - -<ul> - <li>{{jsxref("Proxy")}}</li> - <li>{{jsxref("Proxy.handler", "handler")}}</li> - <li>{{jsxref("Reflect.set()")}}</li> -</ul> |
