* рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖрдпрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдореБрдЭреЗ рдпрд╣ рдмрддрд╛рдПрдВрдЧреАрдореИрдВ рдЕрдкрдиреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдЙрди рд╕рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рд╣реЛрдВрдЧреЗ рдЬреЛ рдЫрд╛рддреНрд░ рдореБрдЭрд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкреВрдЫрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдпрд╣ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ - рдорд╣рд╛рдиред
рд╕рд╛рдордЧреНрд░реАред
- рдкрд░рд┐рдЪрдп
- рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рддрдлрд╣рдореА
- рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП
рдкрд░рд┐рдЪрдп
this
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдХреА рд╕рдмрд╕реЗ рднреНрд░рд╛рдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЬрд╛рд╡рд╛ рд╕реЗ рдЖрдХрд░, рдУрдУрдкреА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛ред рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛, рдФрд░ рдореБрдЭреЗ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕ рд╕рдордп рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рд╕рдВрджреЗрд╣ рд╣реБрдЖ рдХрд┐
this
рдХреЛрдб рдореЗрдВ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕реНрдерд╛рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╣ рд╣рд░ рджрд┐рди рдкреИрджрд╛ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдХрдо рд╕реЗ рдХрдо рдЙрд╕ рд╕рдордп рддрдХ рдЬрдм рддрдХ рдЖрдк рдХреБрдЫ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдирд┐рдпрдо рдирд╣реАрдВ рд╕реАрдЦрддреЗред
this
рдмрд╛рд░реЗ рдореЗрдВ рдЧрд▓рддрдлрд╣рдореА
рдЗрд╕ рдЦреЛрдЬрд╢рдмреНрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд╕рд╛рдорд╛рдиреНрдп рдЧрд▓рдд рдзрд╛рд░рдгрд╛рдПрдБ рд╣реИрдВред рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЗрдВ рдЬрд▓реНрджреА рд╕реЗ рджреВрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдпрд╣ рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рд╕рдВрджрд░реНрдн рд╣реИредрдпрд╣ рдзрд╛рд░рдгрд╛ рдЕрдХреНрд╕рд░ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐
this
рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ, рдЧреБрдгреЛрдВ рдХреА рддрд░рд╣, рдЗрд╕ рджрд╛рдпрд░реЗ рдореЗрдВ рд╕рднреА рдЪрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВред рдпрд╣ рдЧрд▓рдд рдзрд╛рд░рдгрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрдкрдЬреА рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЛрдЯреЗ рддреМрд░ рдкрд░, рдпрд╣ рдРрд╕рд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рдкрд░ рд╣реИрдВ, рддреЛ
this
window
(рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рд╢реАрд░реНрд╖ рд╕реНрддрд░ рдкрд░ рдШреЛрд╖рд┐рдд рд╕рднреА рдЪрд░
window
рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
function test(){ const a = " , "; console.log(this.a); } test();
рдпрд╣ рд╡рд╣ рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╡рд┐рдзрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдлрд┐рд░, рдпрд╣ рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдЪ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдирд╣реАрдВред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдЧреБрдг рд╣реИред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рддрд░реНрдХ рд╕реЗ рднреА рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕рд╛рде рд╕рдВрдкрддреНрддрд┐ рд╣реИред
const f = function(){ console.log(this); } const object1 = { method: f }; const object2 = { method: f };
рддреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕реА рд╡рд╕реНрддреБ рдЙрд╕рдХреА рд╣реЛрдЧреА?
рдорд╣рддреНрд╡рдкреВрд░реНрдг! рднрд▓реЗ рд╣реА рдХреЛрдИ рд╡рд╕реНрддреБ ES6 рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╣реЛ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдпрд╣реА рд╣реЛрдЧреАред "рд╕рд╛рдорд╛рдиреНрдп" рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рд╕реЗ рд╕рдорд╛рдирддрд╛ рд╕реЗ рдореВрд░реНрдЦ рдордд рдмрдиреЛред
рдпрд╣ рдПрдХ рдЬреЗрдбреА рддрдХрдиреАрдХ рд╣реИ, рдЬрд┐рд╕реЗ рдПрдХ рдмрд╛рд░ рд╕реАрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИрдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ
this
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдПрдХрдорд╛рддреНрд░ рдорд╛рдорд▓рд╛ рдЬрдм рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рд╣реИ рддреЛ рдУрдУрдкреА рд╣реИред рдЕрдиреНрдпрддреНрд░, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЗрд╡рд▓ рдмреБрд░рд╛рдИ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдорддреМрд░ рдкрд░ рдХреЛрдб рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдУрд╡рд░рдХрд┐рд▓ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ,
this
рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд, "рд╢реВрдиреНрдп рд╕реЗ рдкрд╣рд▓рд╛" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рддрд░реНрдХ рд╣реИ, рдЬреЛ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓, рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рд╡рд╣рд╛рдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХрд╛ рдореВрд▓реНрдп рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП
рдпрд╣рд╛рдВ рдореИрдВ рдПрдХ рдХрдареЛрд░ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрднрд╡рд╣реАрди рдХреЛрдбрд░ рднреА рд╕рдордЭ рд╕рдХреЗрдЧрд╛ рдХрд┐
this
рдЙрд╕рдХреЗ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕рдорд╛рди рд╣реИред рдЕрдзрд┐рдХ рд╡рд░реНрдмреЛрдЬрд╝ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЛ рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рдиреАрдЪреЗ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддрд╛рдХрд┐ рджреГрд╢реНрдп рд╕реНрдерд╛рди рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред
- рдХреНрдпрд╛ рд╣рдо рдХрд┐рд╕реА рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ?
рдЯрд┐рдкреНрдкрдгреАрд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдХреЛрдб рдореЗрдВ (рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдирд╣реАрдВ), this
рд╣рдореЗрд╢рд╛ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ window
рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд╛рдорд▓реЗ рд╣реЛрддреЗ рд╣реИрдВред
- рдХреНрдпрд╛ рд╣рдо рдПрд░реЛ рдлрдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рд╣реИрдВ?
- рд╣рд╛рдВ: рдЗрд╕рдХрд╛ рдорд╛рди рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд╕реНрддрд░ рдЕрдзрд┐рдХ рд╣реЛрддрд╛ рд╣реИ (рдпрд╛рдиреА рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдПрдХ рд╣реЛрддрд╛ рд╣реИ)ред рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдкрд░ рд▓реМрдЯреЗрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рджреЛрд╣рд░рд╛рдПрдВред рдпрджрд┐ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ
this
рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред - рдирд╣реАрдВ: рдЕрдЧрд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВред
рдЯрд┐рдкреНрдкрдгреАрддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рддрдерд╛рдХрдерд┐рдд "рд▓реЗрдХреНрд╕рд┐рдХрд▓ this
" рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рддреАрд░ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрд╕рдХрд╛ рдорд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╣рд╛рдБ (рдХрд┐рд╕ рд╢рд╛рдмреНрджрд┐рдХ рд╕рдВрджрд░реНрдн рдореЗрдВ) рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдХреИрд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рдХрднреА-рдХрднреА рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдмрд╛рд░ рдпрд╣ рддреАрд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдпреЛрдЧреНрдп рдмрдирд╛рддрд╛ рд╣реИред
- рдХреНрдпрд╛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ (рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?
- рд╣рд╛рдВ:
this
рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ "рдирд┐рд░реНрдорд╛рдгрд╛рдзреАрди" рд╣реИред - рдирд╣реАрдВ: рдЕрдЧрд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВред
рдЯрд┐рдкреНрдкрдгреАрд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ ES6 рд╡рд░реНрдЧ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╢рд╛рдпрдж рдпрд╣ рдЕрд▓рдЧ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдлрд┐рд░, super()
рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕рдХрд╛ рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рд╣реИ (рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрдЧрд╛), рдФрд░ super()
рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ рдирдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред
- рдХреНрдпрд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрд╛рдЗрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ?
- рд╣рд╛рдВ: рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдорд╛рди рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рдорд╛рди рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ
bind
рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред - рдирд╣реАрдВ: рдЕрдЧрд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВред
рдЯрд┐рдкреНрдкрдгреАbind
рдкрджреНрдзрддрд┐ рд╡рд┐рдзрд┐ рдХреА рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдареАрдХ this
рдФрд░, рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдХреБрдЫ рддрд░реНрдХ рджреЗрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рди рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐, рдореИрдВ, рдПрдХ "рд╡рд┐рджреЗрд╢реА рдмрд╛рдЙрдВрдбрдлрдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ" рдмреЛрд▓реАред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рд╡рд┐рджреЗрд╢реАрд╡рд╛рдж рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ bind
рд╣рдо рдЗрд╕реЗ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗред рдЗрд╕рд▓рд┐рдП, рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рддреЗ рд╣реБрдП, рдЗрд╕ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдЬрд╡рд╛рдм рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ this
рдкрд╣рд▓реЗ рдХреЙрд▓ рдХреЗ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реБрдЖред
- рдХреНрдпрд╛ рдпрд╣ рд╕рдорд╛рд░реЛрд╣ рдХрд╣реАрдВ рдХреЙрд▓рдмреИрдХ рдпрд╛ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реБрдЖ рд╣реИ?
- рд╣рд╛рдВ: рдЕрдХреЗрд▓реЗ рднрдЧрд╡рд╛рди рдХреЛ рдкрддрд╛ рд╣реИ рдХрд┐ рдмреБрд▓рд╛рдиреЗ рдкрд░ рдпрд╣ рдХреНрдпрд╛ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдЙрд╕ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрдврд╝реЗрдВ рдЬреЛ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧреАред
- рдирд╣реАрдВ: рдЕрдЧрд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВред
рдЯрд┐рдкреНрдкрдгреАрдПрдХ рдЧреИрд░-рддреАрд░ рдФрд░ рдмрд╛рдзреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХрд╛ рдореВрд▓реНрдп рдЙрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдореЗрдВ рдЗрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрд╣реАрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
this
рдорд╛рди рдЖрдкрдХреЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг:
`use strict` document.addEventListener('keydown', function(){ console.log(this); });
- рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?
- рд╣рд╛рдВ: рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ,
this
рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рдХрд░ рджреЗрддрд╛ рд╣реИред - рдирд╣реАрдВ: рдЕрдЧрд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВред
рдЯрд┐рдкреНрдкрдгреАрдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ред рдЕрдзрд┐рдХ рдареАрдХ, рджреЛред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ this
apply
рдФрд░ call
рдмреАрдЪ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдмрд╛рдХреА рддрд░реНрдХ рдХреИрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
- рдХреНрдпрд╛ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдореВрд▓реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддреБрд░рдВрдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?
- рд╣рд╛рдБ:
this
рдЙрдкрд░реЛрдХреНрдд рд╡рд╕реНрддреБ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред - рдирд╣реАрдВ: рдЕрдЧрд▓рд╛ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рджреЗрдЦреЗрдВред
рдЯрд┐рдкреНрдкрдгреАрджрд░рдЕрд╕рд▓, рдЗрд╕ рддрдВрддреНрд░ рд╕реЗ (рд╕рд╛рде рд╣реА рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ) рдЗрд╕ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рдкреИрд░ рдмрдврд╝рддреЗ рд╣реИрдВ рдХрд┐ "
this
рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕реЗ" рд╡рд┐рдзрд┐ "рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдореИрдВ рд╕рд┐рд░реНрдл рдХреЛрдб рд▓рд┐рдЦреВрдВрдЧрд╛ред
'use strict'; const object1 = { method: function(){ console.log(this); } } const object2 = { method: object1.method } object1.method();
- рдХреНрдпрд╛ рдХреЛрдб рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ? ('рд╕рдЦреНрдд рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ', ES6 рдореЙрдбреНрдпреВрд▓)
- рд╣рд╛рдВ:
this
undefined
ред - рдирд╣реАрдВ:
this
рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред
рдЯрд┐рдкреНрдкрдгреАрдпрджрд┐ рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ
this
рдХрд┐рд╕реА рднреА рддрдВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЧрд▓рдд рдзрд╛рд░рдгрд╛рдПрдВ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХреЗ рджреМрд░рд╛рди рд╡реЗ рдЕрдХреНрд╕рд░ рдореБрдЭреЗ рдРрд╕реА рдмрд╛рдд рдмрддрд╛рддреЗ рд╣реИрдВ:
const obj = { test: function(){ (function(){ console.log(this); })();
рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ "рдЧрд▓рддрдлрд╣рдореА" рдЦрдВрдб рдореЗрдВ рдХрд╣рд╛ рдерд╛, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдИрдПрд╕ 6 рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ред рдпрд╣ рднреА рд╕рдЪ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдВрдЪрддреЗ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреНрдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддреА рд╣реИрдВред рдФрд░ рдпрд╣ рд╕рдм рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред
рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ, "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ,
this
рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рдкрд╛рд░рд┐рдд рдХреА рдЧрдИ рдереАред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмрд╛рдж рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рджреА рдЧрдИ рдереАред ES5 рдиреЗ рдПрдХ рд╕рдЦреНрдд рдореЛрдб рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬреЛ ECMAScript рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╕рдЦреНрдд рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рдореЛрдб рдореЗрдВ, рдЗрд╕рдХрд╛ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдорд╛рди
undefined
ред
ES6 рдореЙрдбреНрдпреВрд▓ рдореЗрдВ, рд╕рдЦреНрдд рдореЛрдб рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реИред
рд╕рдЦреНрдд рдореЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рддрдВрддреНрд░ рднреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NodeJS рдореЗрдВ, рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдореЛрдб рдХреЛ
--use-strict
рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рднреА рд╣реИред рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдпрд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдПрдХ рдЧреБрдгрди рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдиреЗрдВ - рдФрд░ рдЖрдкрдХреЛ рдлрд┐рд░ рд╕реЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдРрд╕реА рдмрд╛рддреЗрдВред
рдкреАрдПрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдРрдВрдЧрд┐рд╕ рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐ рдЬрдм рдирд┐рд░реНрдорд╛рдг рдХреЗ
рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИ , рддреЛ рд╡рд╕реНрддреБ рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рдХреА рдЬрдЧрд╣ рд▓реЗрддреА рд╣реИред рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░ рдореЗрдВ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ 2019+ рдореЗрдВ рдорд┐рд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИред рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рд╣реИред
PPS рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
rqrqrqrq рдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдХрд┐
new
bind
рддреБрд▓рдирд╛
new
рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╕рдВрд╢реЛрдзрди рдкрд╣рд▓реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рдзрдиреНрдпрд╡рд╛рдж!