Baseline Widely available
ÐеÑод handler.set() ÑвлÑеÑÑÑ Ð»Ð¾Ð²ÑÑкой Ð´Ð»Ñ ÑÑÑановки знаÑÐµÐ½Ð¸Ñ ÑвойÑÑвÑ.
СинÑакÑиÑvar p = new Proxy(target, {
set: function (target, property, value, receiver) {},
});
ÐаÑамеÑÑÑ
СледÑÑÑие паÑамеÑÑÑ Ð¿ÐµÑедаÑÑÑÑ Ð¼ÐµÑÐ¾Ð´Ñ set()
. this
пÑивÑзан к обÑабоÑÑикÑ
target
ÐÑÑ Ð¾Ð´Ð½Ñй обÑекÑ, коÑоÑÑй пÑокÑиÑÑеÑÑÑ.
property
ÐÐ¼Ñ ÑвойÑÑва, в коÑоÑое ÑÑÑанавливаеÑÑÑ Ð·Ð½Ð°Ñение value
.
value
ÐнаÑение, ÑÑÑанавливаемое в ÑвойÑÑво property
.
receiver
ÐбÑекÑ, коÑоÑÐ¾Ð¼Ñ Ð¿ÐµÑвонаÑалÑно бÑло пÑиÑвоено задание. ÐбÑÑно ÑÑо Ñам пÑокÑи. Ðо обÑабоÑÑик set()
Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñзван коÑвенно, ÑеÑез ÑепоÑÐºÑ Ð¿ÑоÑоÑипов или ÑазлиÑнÑми дÑÑгими ÑпоÑобами. ÐапÑимеÑ, пÑедположим, ÑÑо ÑкÑÐ¸Ð¿Ñ Ð²ÑполнÑÐµÑ obj.name = "jen"
, пÑи ÑÑом obj
не ÑвлÑеÑÑÑ Ð¿ÑокÑи и не Ð¸Ð¼ÐµÐµÑ ÑобÑÑвенного ÑвойÑÑва .name
, но Ð¸Ð¼ÐµÐµÑ Ð¿ÑокÑи в ÑепоÑке пÑоÑоÑипов. ÐÑÐ´ÐµÑ Ð²Ñзван обÑабоÑÑик пÑокÑи set()
, а obj
бÑÐ´ÐµÑ Ð¿ÐµÑедан в каÑеÑÑве полÑÑаÑелÑ.
ÐеÑод set
должен возвÑаÑаÑÑ boolean знаÑение.
true
, еÑли пÑиÑвоение вÑполнено ÑÑпеÑно.set()
возвÑаÑÐ°ÐµÑ false
, а пÑиÑваивание пÑоизоÑло в коде ÑÑÑогого Ñежима, Ñо бÑÐ´ÐµÑ Ð²ÑбÑоÑена TypeError
.ÐеÑод handler.set
ÑвлÑеÑÑÑ Ð»Ð¾Ð²ÑÑкой Ð´Ð»Ñ ÑÑÑановки знаÑÐµÐ½Ð¸Ñ ÑвойÑÑвÑ.
ÐÑа ловÑÑка Ð¼Ð¾Ð¶ÐµÑ Ð¿ÐµÑÐµÑ Ð²Ð°ÑÑваÑÑ ÑледÑÑÑие опеÑаÑии:
proxy[foo] = bar
and proxy.foo = bar
Object.create(proxy)[foo] = bar
Reflect.set()
ÐÑли наÑÑÑÐµÐ½Ñ ÑледÑÑÑие инваÑианÑÑ, Ñо proxy вÑбÑоÑÐ¸Ñ TypeError
:
set()
знаÑÐµÐ½Ð¸Ñ false
, бÑÐ´ÐµÑ Ð²ÑбÑоÑено иÑклÑÑение TypeError
.СледÑÑÑий код пеÑÐµÑ Ð²Ð°ÑÑÐ²Ð°ÐµÑ ÑÑÑÐ°Ð½Ð¾Ð²ÐºÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ ÑвойÑÑвÑ.
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
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4