Baseline Widely available
СÑаÑиÑеÑкий меÑод Proxy.revocable()
ÑоздаÑÑ Ð¿Ð¾Ð´Ð»ÐµÐ¶Ð°Ñий оÑзÑÐ²Ñ Ð¾Ð±ÑÐµÐºÑ Proxy
.
Proxy.revocable(target, handler)
ÐаÑамеÑÑÑ
target
Целевой обÑÐµÐºÑ Ð´Ð»Ñ Ð¾Ð±Ð¾ÑаÑÐ¸Ð²Ð°Ð½Ð¸Ñ Ð² Proxy
. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð»Ñбой обÑÐµÐºÑ (маÑÑив, ÑÑнкÑÐ¸Ñ Ð¸Ð»Ð¸ даже дÑÑгой пÑокÑи).
handler
ÐбÑекÑ, ÑвойÑÑва коÑоÑого ÑвлÑÑÑÑÑ ÑÑнкÑиÑми, коÑоÑÑе опÑеделÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ proxy
, когда Ñ Ð½Ð¸Ð¼ пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð´ÐµÐ¹ÑÑвие.
ÐбÑÑнÑй обÑÐµÐºÑ Ñ Ð´Ð²ÑÐ¼Ñ ÑвойÑÑвами:
proxy
ÐÑокÑи обÑекÑ, иденÑиÑнÑй ÑÐ¾Ð·Ð´Ð°Ð²Ð°ÐµÐ¼Ð¾Ð¼Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð²Ñзова new Proxy(target, handler)
.
revoke
ФÑнкÑÐ¸Ñ Ð±ÐµÐ· паÑамеÑÑов Ð´Ð»Ñ Ð¾ÑзÑва (вÑклÑÑениÑ) proxy
.
ФабÑиÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ Proxy.revocable()
ÑÑо Ñо же Ñамое, ÑÑо конÑÑÑÑкÑÐ¾Ñ Proxy()
, но в дополнение к ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿ÑокÑи обÑекÑа она ÑоздаÑÑ ÑÑнкÑÐ¸Ñ revoke
, коÑоÑÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²Ñзвана Ð´Ð»Ñ Ð¾ÑÐ¼ÐµÐ½Ñ Ð¿ÑокÑи. ÐÑокÑи обÑÐµÐºÑ Ð¸ ÑÑнкÑÐ¸Ñ revoke
обоÑаÑиваÑÑÑÑ Ð² обÑÑнÑй обÑекÑ.
ФÑнкÑÐ¸Ñ revoke
не пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¿Ð°ÑамеÑÑов и не завиÑÐ¸Ñ Ð¾Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ this
. СозданнÑй обÑÐµÐºÑ proxy
пÑикÑеплÑеÑÑÑ Ðº ÑÑнкÑии revoke
в виде пÑиваÑного ÑвойÑÑва, к коÑоÑÐ¾Ð¼Ñ ÑÑнкÑÐ¸Ñ revoke
обÑаÑаеÑÑÑ Ð¿Ñи вÑзове (пÑиваÑное ÑвойÑÑво незамеÑно извне, но оно влиÑÐµÑ Ð½Ð° Ñо, как пÑоиÑÑ
Ð¾Ð´Ð¸Ñ ÑÐ±Ð¾Ñ Ð¼ÑÑоÑа). ÐбÑÐµÐºÑ proxy
не Ð¿Ð¾Ð¿Ð°Ð´Ð°ÐµÑ Ð² замÑкание ÑÑнкÑии revoke
(ÑÑо Ð´ÐµÐ»Ð°ÐµÑ ÑÐ±Ð¾Ñ Ð¼ÑÑоÑа proxy
невозможнÑм еÑли revoke
еÑÑ ÑÑÑеÑÑвÑеÑ).
ÐоÑле вÑзова ÑÑнкÑии revoke()
пÑокÑи ÑÑановиÑÑÑ Ð½ÐµÐ¿ÑигоднÑм Ð´Ð»Ñ Ð¸ÑполÑзованиÑ: лÑбое обÑаÑени к обÑабоÑÑÐ¸ÐºÑ Ð²ÑÐ·Ð¾Ð²ÐµÑ TypeError
. ÐÑокÑи, бÑдÑÑи Ð¾Ð´Ð½Ð°Ð¶Ð´Ñ Ð¾Ñозван, оÑÑаÑÑÑÑ Ð¾ÑозваннÑм, и повÑоÑнÑй вÑзов revoke()
не Ð¸Ð¼ÐµÐµÑ ÑÑÑекÑа â ÑакÑиÑеÑки вÑзов revoke()
оÑделÑÐµÑ Ð¾Ð±ÑÐµÐºÑ proxy
Ð¾Ñ ÑÑнкÑии revoke
, и Ñ Ð½ÐµÑ Ð±Ð¾Ð»ÑÑе Ð½ÐµÑ Ð´Ð¾ÑÑÑпа к обÑекÑÑ. ÐÑли на пÑокÑи болÑÑе Ð½ÐµÑ ÑÑÑлок, Ñо он ÑÑановиÑÑÑ Ð´Ð¾ÑÑÑпнÑм Ð´Ð»Ñ ÑбоÑа мÑÑоÑа. ФÑнкÑÐ¸Ñ revoke
Ñакже оÑделÑÐµÑ target
и handler
Ð¾Ñ proxy
, поÑÑÐ¾Ð¼Ñ ÐµÑли на target
Ð½ÐµÑ ÑÑÑлок, Ñо он Ñоже ÑÑановиÑÑÑ Ð´Ð¾ÑÑÑпнÑм Ð´Ð»Ñ ÑбоÑа мÑÑоÑа (даже еÑли пÑокÑи еÑÑ ÑÑÑеÑÑвÑеÑ), поÑколÑÐºÑ Ð±Ð¾Ð»ÑÑе Ð½ÐµÑ Ñвного ÑпоÑоба взаимодейÑÑÐ²Ð¸Ñ Ñ ÑелевÑм обÑекÑом.
ÐÑедоÑÑавление полÑзоваÑелÑм возможноÑÑÑ Ð²Ð·Ð°Ð¸Ð¼Ð¾Ð´ÐµÐ¹ÑÑвоваÑÑ Ñ Ð¾Ð±ÑекÑом ÑеÑез подлежаÑий оÑзÑÐ²Ñ Ð¿ÑокÑи позволÑÐµÑ ÐºÐ¾Ð½ÑÑолиÑоваÑÑ Ð²ÑÐµÐ¼Ñ Ð¶Ð¸Ð·Ð½Ð¸ обÑекÑа доÑÑÑпного полÑзоваÑелÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑделаÑÑ Ð¾Ð±ÑÐµÐºÑ Ð¿ÑигоднÑм Ð´Ð»Ñ ÑбоÑа мÑÑоÑа, даже еÑли полÑзоваÑÐµÐ»Ñ Ð²Ñе еÑÑ Ñ ÑÐ°Ð½Ð¸Ñ ÑÑÑÐ»ÐºÑ Ð½Ð° его пÑокÑи.
ÐÑимеÑÑ ÐÑполÑзование Proxy.revocable()const revocable = Proxy.revocable(
{},
{
get(target, name) {
return `[[${name}]]`;
},
},
);
const proxy = revocable.proxy;
console.log(proxy.foo); // "[[foo]]"
revocable.revoke();
console.log(proxy.foo); // Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¸ÑклÑÑение TypeError
proxy.foo = 1; // Ñнова TypeError
delete proxy.foo; // вÑÑ ÐµÑÑ TypeError
typeof proxy; // "object", typeof не вÑзÑÐ²Ð°ÐµÑ Ð½Ð¸ÐºÐ°ÐºÐ¸Ñ
proxy-пеÑеÑ
ваÑÑиков ÑобÑÑий
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
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