Proxy

Π’Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² ECMAScript 6, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Proxy позволяСт ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ для ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. НапримСр, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

var handler = {
  get: function(target, name) {
    return name in target ? target[name] : 42;
}};
var p = new Proxy({}, handler);
p.a = 1;
console.log(p.a, p.b); // 1, 42

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Proxy опрСдСляСт target (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½ΠΎΠ²Ρ‹ΠΉ пустой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) ΠΈ handler - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° особая функция-Π»ΠΎΠ²ΡƒΡˆΠΊΠ° get. "ΠŸΡ€ΠΎΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ" Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€ΠΈ доступС ΠΊ Π΅Π³ΠΎ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ свойству Π²Π΅Ρ€Π½Π΅Ρ‚ Π½Π΅ undefined, Π° числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 42.

Last updated