рдпрд╣ рд▓реЗрдЦ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдкреА рдХрд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЬреЗрдПрд╕ рддрд░реАрдХреЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдо рдмрд╕ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рднреАрддрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╕реНрддреБ рддрдХ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЙрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╕реНрддреБ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
let obj1={prop1:'HEllo',method1(){console.log(this);}} let obj2={method2:obj1.method1}; obj2.method2();
рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
class MyProxy{ constructor(target){ return new Proxy(target,this); } get(target,prop){ console.log(target,prop);
рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рд▓реЗрдмрд▓ 2); рд╣рдореЗрдВ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╡рд╕реНрддреБ рджреЗрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкреНрд░реЙрдХреНрд╕реА рд▓рдХреНрд╖реНрдп рдФрд░ рдкреНрд░реЛрдк рджреЛрдиреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ (рджреЗрдЦреЗрдВ рд▓реЗрдмрд▓ 1); рд▓реЗрдХрд┐рди рдХреЛрдб рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдХреНрдпрд╛ рд╕реНрдирд╛рди рдХрд░рдирд╛ рд╣реИ?
рд╡рд┐рдзрд┐ рд╡рд╕реНрддреБ (рдпрд╣) рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдпрд╣ рддрдм рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдкреНрд░рддрд┐рдмрд┐рдВрдм (рд╡рд╕реНрддреБ рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдФрд░ рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди) рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╡рд╕реНрддреБ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣рдо рдХреЛрдб рдХреЛ рдзреАрдорд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВ?
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╣рдо рдЕрдзрд┐рдХ рддрд░реНрдХ рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рдлрд┐рд▓реНрдЯрд░ рдЖрджрд┐, рддреЛ рдХреЛрдб рдЧрд▓рддреА рд╕реЗ рдЭреБрдХ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп, "рд░реЛрд▓-рдУрд╡рд░" рд╣реЛрддрд╛ рд╣реИред (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рд╡рд┐рдзрд┐ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдгреЛрдВ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ)ред рдпрд╣реА рд╣реИ, рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдЖрдЧ рд▓рдЧ рдЬрд╛рддреА рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред
рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?
рдЬреИрд╕рд╛ рдХрд┐ рд╕рдордЭрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рд╣реИрдВрдбрд▓рд░.рдЧреЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдУрд╡рд░рд░рд╛рдЗрдб рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
let answer=target[prop]; if(typeof target[prop] ==='function'){ answer=target[prop].bind(target); }
рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдорд┐рд▓рддреЗ рд╣реИрдВ:
class MyProxy{ constructor(target){ return new Proxy(target,this); } get(target,prop){
рдЕрдВрдд рдореЗрдВ, рдмреЛрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВред
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ / рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдирд╛ред рдкреНрд░рддреНрдпреЗрдХ рдиреЗрд╕реНрдЯреЗрдб рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╣реЛрдЧрд╛:
class MyProxy{ constructor(target){ return new Proxy(target,this); } get(target,prop){ let answer; let tp=target[prop];
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!