рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рдЕрдиреБрдХреВрд▓рди

рд╕рд╛рдордЧреНрд░реА, рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЖрдЬ рд╣рдо рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдореИрдерд┐рдпрд╕ рдмрд┐рдиреЗрдВрд╕ рдФрд░ рдмреЗрдиреЗрдбрд┐рдХреНрдЯ рдореЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╡реЗ Google рдкрд░ V8 JS рдЗрдВрдЬрди рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд▓реЗрдЦ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рддрдВрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИ рдЬреЛ рди рдХреЗрд╡рд▓ рд╡реА 8 рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдЕрдиреНрдп рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рддрдВрддреНрд░ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдЪрд┐рдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд▓реЛрдЧреЛрдВ рдХреЛ рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдореБрджреНрджреЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣рд╛рдВ рд╣рдо рдЗрдВрдЬрди рдЕрдиреБрдХреВрд▓рди рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдХреИрд╕реЗ рддреЗрдЬ рдХрд░реЗрдВрдЧреЗред



рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░ рдФрд░ рдЯреНрд░реЗрдб-рдСрдл


рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдХреЛрдб рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рдЧрднрдЧ рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рд╕рдорд╛рди рджрд┐рдЦрддреА рд╣реИред
рд╕реНрд░реЛрдд JS рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛

рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░, рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдорд╛рди рд╣реИрдВ, рдЙрдирдХреЗ рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рд╕рд┐рд╕реНрдЯрдо рдЕрдХреНрд╕рд░ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ? рдХреБрдЫ рдЗрдВрдЬрдиреЛрдВ рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░ рдХреНрдпреЛрдВ рд╣реИрдВ? рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдпрд╛ рддреЛ рдЬрд▓реНрджреА рд╕реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдЗрд╖реНрдЯрддрдо рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдирд┐рд╖реНрдкрд╛рджрди рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рддреЗрдЬ рддреИрдпрд╛рд░реА рдЬреЛ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддреА рд╣реИ рд▓реЗрдХрд┐рди рддреЗрдЬреА рд╕реЗ рдЪрд▓рддреА рд╣реИ

рджреБрднрд╛рд╖рд┐рдпрд╛ рдЬрд▓реНрджреА рд╕реЗ рдмрд╛рдпрдЯреЗрдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ рдпрд╣ рдЕрдиреБрдХреВрд▓рд┐рдд, рддреЗрдЬ рдорд╢реАрди рдХреЛрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ V8 рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред V8 рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдЗрдЧреНрдирд┐рд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдореМрдЬреВрджрд╛ рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рд╣реИ (рд╕реНрд░реЛрдд рдмрд╛рдпреЛрдЯреЗрдХ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)ред V8 рд╕рдВрдХрд▓рдХ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдЯрд░реНрдмреЛрдлреИрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдорд╢реАрди рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдЗрдЧреНрдирд┐рд╢рди рджреБрднрд╛рд╖рд┐рдпрд╛ рдФрд░ рдЯрд░реНрдмреЛрдлреИрди рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдХрдВрдкрд╛рдЗрд▓рд░

рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдХреЗ рдмреАрдЪ рд╡реНрдпрд╛рдкрд╛рд░-рдмрдВрдж рдХрд╛ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдХреБрдЫ рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд┐рдВрдЧ рдХрдВрдкреЛрдиреЗрдВрдЯ IonMonkey рдХреЗ рдмреАрдЪ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдирдХреА рдореЗрдВ, рдореВрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рд╕реНрддрд░ рд╣реЛрддрд╛ рд╣реИ (рдЗрд╕реЗ рдореЛрдЬрд╝рд┐рд▓рд╛ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ "рдмреЗрд╕рд▓рд╛рдЗрди рдХрдВрдкрд╛рдЗрд▓рд░" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреЗрд╕рд▓рд╛рдЗрди рдПрдХ рдЙрдЪрд┐рдд рдирд╛рдо рдирд╣реАрдВ рд╣реИ)ред
рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдВрдХреА рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░

рджреБрднрд╛рд╖рд┐рдпрд╛ рдЬрд▓реНрджреА рд╕реЗ рдмрд╛рдпрдЯреЗрдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдзрд╛рд░ рд╕рдВрдХрд▓рдХ рдХреЛ рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдб рдкрд╣рд▓реЗ рд╕реЗ рддреЗрдЬ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдЕрдиреБрдХреВрд▓рди IonMonkey рд╕рдВрдХрд▓рдХ рдХреЛ рдорд╢реАрди рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдЗрдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЗрдВрдЬрдиреЛрдВ рдХреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЗрдВ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддреА рд╣реИрдВред рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдПрдХ "рд╣реЙрдЯ" рд▓реВрдк рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдб рд╣реИ рдЬреЛ рдХрдИ рдмрд╛рд░ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред

let result = 0; for (let i = 0; i < 4242424242; ++i) {    result += i; } console.log(result); 

V8 рдЗрдЧреНрдирд┐рд╢рди рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рд╕рдордп рдореЗрдВ, рдЗрдВрдЬрди рдХреЛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб "рд╣реЙрдЯ" рд╣реИ рдФрд░ рдЯрд░реНрдмреЛрдлреИрди рдлреНрд░рдВрдЯреЗрдВрдб рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХреА рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдорд╢реАрди рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд░реНрдмреЛрдлреИрди рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреЛ рдЖрдЧреЗ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рддреЗ рд╣реБрдП TurboFan рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
V8 рдореЗрдВ рд╣реЙрдЯ рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди

рдЕрдиреБрдХреВрд▓рди рдХреЗ рджреМрд░рд╛рди, V8 рдЗрдЧреНрдирд┐рд╢рди рдореЗрдВ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред рдЬрдм рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдорд╢реАрди рдХреЛрдб рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдиреА рдЗрдВрдЬрди рднреА рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдореВрд▓ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрддрд░ рд╣реИ, рдЬреЛ рдЗрд╕ рддрдереНрдп рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ "рд╣реЙрдЯ" рдХреЛрдб рдкрд╣рд▓реЗ рдЗрд╕ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдорд┐рд▓рддрд╛ рд╣реИред рдпрд╣ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдореЗрдВ рдЖрдзрд╛рд░ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдВрдХреА рдореЗрдВ рд╣реЙрдЯ рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди

рдпрджрд┐ рдЖрдзрд╛рд░ рдХреЛрдб рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рддрд╛ рд╣реИ, рддреЛ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдВрдХреА рдЕрдВрддрддрдГ IonMonkey рдлреНрд░рдВрдЯрдПрдВрдб рдФрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝рд░ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ V8 рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрдзрд╛рд░ рдХреЛрдб IonMonkey рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд░рд╣рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЬрдм рдЕрдиреБрдХреВрд▓рди рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдзрд╛рд░ рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдЪрдХреНрд░ рдЗрдВрдЬрди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реНрдкрд╛рдЗрдбрд░рдореЛрдВрдХреА рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЪрдХреНрд░ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╕рдВрдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдореБрдЦреНрдп рдереНрд░реЗрдб рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдп рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЪрдХреНрд░ рдХреЙрдкреА рдФрд░ рдмрд╛рдпрдЯреЗрдХреЛрдб рдФрд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЪрдХреНрд░ рдореЗрдВ рд╣реЙрдЯ рдХреЛрдб рдЕрдиреБрдХреВрд▓рди

рдЬрдм SimpleJIT рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдЬрдирд░реЗрдЯ рдХреЛрдб рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрдВрдЬрди рдЗрд╕реЗ bytecode рдХреЗ рдмрдЬрд╛рдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ FullJIT рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдХреЛрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдИ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдард╣рд░рд╛рд╡ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкреВрд░реНрдг-рд╕рдВрдХрд▓рдХ (рдлреНрд░рдВрдЯ-рдПрдВрдб) рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╡рдЬрд╣ рд╕реЗ рдмрд╣реБрдд рдХрдо рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╢реВрдиреНрдп рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣реЗрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рдХреЙрдкреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдпрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рджреЗрд░реА рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдордЭреМрддрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

JavaScriptCore рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдореБрдЦреНрдп рд╕реВрддреНрд░ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рднреА рдЕрдиреБрдХреВрд▓рди рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдИ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЪрд░рдг рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рдмрд╕ рджреВрд╕рд░реЗ рдзрд╛рдЧреЗ рдореЗрдВ рд╕рдВрдХрд▓рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░ рдлрд┐рд░ рдореБрдЦреНрдп рдереНрд░реЗрдб рд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рд▓реЙрдХрд┐рдВрдЧ рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ "рд╣реЙрдЯ" рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдореБрдЦреНрдп рдереНрд░реЗрдб рдХреЗ рдордЬрдмреВрд░ рдЕрд╡рд░реЛрдз рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЗ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдХрд╛рдо рдХреЗ рджреМрд░рд╛рди рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреЛ рддрд╛рд▓реЗ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рд╣рдордиреЗ рдЕрднреА-рдЕрднреА рд╡реНрдпрд╛рдкрд╛рд░-рдЕрдк рдХреА рдЪрд░реНрдЪрд╛ рдХреА рд╣реИ рдЬреЛ рдЗрдВрдЬрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВ, рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреЗрдЬ рдХреЛрдб рдкреАрдврд╝реА рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдирд╛ рдФрд░ рдЖрд╢рд╛рд╡рд╛рджреА рдХрдВрдкрд╛рдЗрд▓рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреЗрдЬ рдХреЛрдб рдмрдирд╛рдирд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпреЗ рдЙрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рджреВрд░ рд╣реИрдВ рдЬреЛ рдЗрдВрдЬрдиреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреА рд╣реИрдВред рдореЗрдореЛрд░реА рдПрдХ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд░рд┐рд╕реЛрд░реНрд╕ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЬреЗрдПрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

 function add(x, y) {   return x + y; } add(1, 2); 

рдпрд╣рд╛рдБ V8 рдореЗрдВ рдЗрдЧреНрдирд┐рд╢рди рджреБрднрд╛рд╖рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди add рдлрдВрдХреНрд╢рди рдХрд╛ рдмрд╛рдпрдЯреЗрдХреЛрдб рд╣реИ:

 StackCheck Ldar a1 Add a0, [0] Return 

рдЖрдк рдЗрд╕ рдмрд╛рдпреЛрдЯреЗрдХ рдХреЗ рдЕрд░реНрде рдореЗрдВ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЪрд╛рд░ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред

рдЬрдм рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдХреЛрдб "рдЧрд░реНрдо" рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЯрд░реНрдмреЛрдлреИрди рдХреЛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдорд╢реАрди рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:

 leaq rcx,[rip+0x0] movq rcx,[rcx-0x37] testb [rcx+0xf],0x1 jnz CompileLazyDeoptimizedCode push rbp movq rbp,rsp push rsi push rdi cmpq rsp,[r13+0xe88] jna StackOverflow movq rax,[rbp+0x18] test al,0x1 jnz Deoptimize movq rbx,[rbp+0x10] testb rbx,0x1 jnz Deoptimize movq rdx,rbx shrq rdx, 32 movq rcx,rax shrq rcx, 32 addl rdx,rcx jo Deoptimize shlq rdx, 32 movq rax,rdx movq rsp,rbp pop rbp ret 0x18 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдмрд╛рдИрдЯреЗрдХреЛрдб рдорд╢реАрди рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд╣реИ, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдорд╢реАрди рдХреЛрдб рдореЗрдВред рджреВрд╕рд░реА рдУрд░, рдмрд╛рдпрдЯреЗрдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рдХреЛ рд╕реАрдзреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдПрдХ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдмрд┐рд▓реНрдХреБрд▓ рд╕рднреА рдХреЛрдб рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛, рдЕрдиреБрдХреВрд▓рд┐рдд рдорд╢реАрди рдХреЛрдб рдмрдирд╛рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЕрдиреБрдХреВрд▓рд┐рдд рдорд╢реАрди рдХреЛрдб рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рд▓рдЧрддреА рд╣реИред
рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧ рдФрд░ рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░

рдирддреАрдЬрддрди, рд╣рдо рдпрд╣ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрдХреВрд▓рди рд╕реНрддрд░ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдлрд╛рд╕реНрдЯ рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди рдХреЗ рдмреАрдЪ рдЪреБрдирдиреЗ рдХреА рдореВрд▓рднреВрдд рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдФрд░ рдлрд╛рд╕реНрдЯ рдХреЛрдб рдЬреЗрдирд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рддред рдпрджрд┐ рд╣рдо рдЗрдВрдЬрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕реНрддрд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рдЬрд┐рддрдиреЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рдЙрддрдиреЗ рд╣реА рд╕реВрдХреНрд╖реНрдо рдЕрдиреБрдХреВрд▓рди рдХреЛрдб рдХреЗ рдЕрдзреАрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдВрдЬрдиреЛрдВ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдВ рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреЛрдб рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рд╕реНрддрд░ рдЙрд╕ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдХреЛрдб рдореЗрдВ рд╡реНрдпрд╛рдкреНрдд рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдХреЗрд╡рд▓ "рдЧрд░реНрдо" рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЕрдиреБрдХреВрд▓рди


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рддрдерд╛рдХрдерд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдлреЙрд░реНрдо (рдЖрдХрд╛рд░) рдФрд░ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ (рдЗрдирд▓рд╛рдЗрди рдХреИрд╢, рдЖрдИрд╕реА) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрдВрдЬрди рд╡рд╕реНрддреБ рдХреЗ рдореВрд▓реНрдпреЛрдВ рд╕реЗ рдЕрд▓рдЧ рд╡рд╕реНрддреБ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рдЬрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЖрдХрд╛рд░ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ

рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢рд┐рдВрдЧ рдирд╛рдордХ рдЕрдиреБрдХреВрд▓рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдлреЙрд░реНрдо рдФрд░ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХрд╛ рд╕рдВрдпреБрдХреНрдд рдЙрдкрдпреЛрдЧ рдЖрдкрдХреЛ рдХреЛрдб рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдерд╛рди рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рджреЛрд╣рд░рд╛рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рддреЗрдЬ рдХрд░рдирд╛

рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк


рдЕрдм рдЬрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреА рдкрд╣реБрдВрдЪ рдХреИрд╕реЗ рдмрдврд╝рд╛рдИ рдЬрд╛рдП, рддреЛ рд╣рд╛рд▓ рд╣реА рдХреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдиреЛрд╡реЗрд╢рди рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ - рдХрдХреНрд╖рд╛рдПрдВред рдпрд╣рд╛рдБ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдХреНрдпрд╛ рджрд┐рдЦрддреА рд╣реИ:

 class Bar {   constructor(x) {       this.x = x;   }   getX() {       return this.x;   } } 

рдпрджреНрдпрдкрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рдЬреЗрдПрд╕ рдореЗрдВ рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдХрдХреНрд╖рд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдЪреАрдиреА рд╣реИрдВ, рдЬреЛ рд╣рдореЗрд╢рд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд░рд╣реА рд╣реИрдВ:

 function Bar(x) {   this.x = x; } Bar.prototype.getX = function getX() {   return this.x; }; 

рдпрд╣рд╛рдВ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ getX рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА getX рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ getX ред рдпрд╣ рдСрдкрд░реЗрд╢рди рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкреНрд░реЙрдкрд░реНрдЯреА рдмрдирд╛рддреЗ рд╕рдордп, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рддрд░реАрдХреЛрдВ рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдЙрдирдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдЬрдм рд╣рдо Bar рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдирд┐рд░рдВрддрд░ foo рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

 const foo = new Bar(true); 

рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣рд╛рдВ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдПрдХрд▓ рдЧреБрдг x ред foo рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк Bar.prototype , рдЬреЛ рдХреНрд▓рд╛рд╕ Bar ред
рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рдЙрд╕рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк

Bar.prototype рдХрд╛ рдЕрдкрдирд╛ рдПрдХ рдлреЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд┐рдВрдЧрд▓ getX рдкреНрд░реЙрдкрд░реНрдЯреА рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЬрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк Bar.prototype рд╣реИ, рдЬреЛ рднрд╛рд╖рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред Object.prototype рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреЗрдбрд╝ рдХрд╛ рдореВрд▓ рддрддреНрд╡ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк null ред

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЖрдк Bar рдХрд╛ рджреВрд╕рд░рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред
рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рдХрдИ рд╡рд╕реНрддреБрдПрдБ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, foo рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ qux рдСрдмреНрдЬреЗрдХреНрдЯ, рдЬреЛ рдХрд┐ Bar рдХреНрд▓рд╛рд╕ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдорд╛рди рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рджреЛрдиреЛрдВ рдПрдХ рд╣реА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк - Bar.prototype рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдг рддрдХ рдкрд╣реБрдБрдЪреЗрдВ


рдЗрд╕рд▓рд┐рдП рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рд╣рдо рдПрдХ рдирдП рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рддреНрд╡рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рд╡рд╕реНрддреБ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 class Bar {   constructor(x) { this.x = x; }   getX() { return this.x; } } const foo = new Bar(true); const x = foo.getX(); //        ^^^^^^^^^^ 

рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рджреЛ рдЪрд░рдгреЛрдВ рд╡рд╛рд▓реЗ рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 const x = foo.getX(); //         : const $getX = foo.getX; const x = $getX.call(foo); 

рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╡рд┐рдзрд┐ рд▓реЛрдб рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдлрд╝рдВрдХреНрд╢рди рд╣реИ)ред рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ, this рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред foo рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ getX рд╡рд┐рдзрд┐ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
Foo рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ GetX рд╡рд┐рдзрд┐ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИ

рдЗрдВрдЬрди foo рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдХрд┐ foo рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреЛрдИ getX рдкреНрд░реЙрдкрд░реНрдЯреА рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЗрдВрдЬрди Bar.prototype рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред рд╡рд╣ рдСрдлрд╕реЗрдЯ 0. рдкрд░ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рдкрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, Bar.prototype рдореЗрдВ рдЗрд╕ рдСрдлрд╕реЗрдЯ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп Bar.prototype , JSFunction рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдФрд░ рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдо рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрди рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 const foo = new Bar(true); foo.getX(); // true Object.setPrototypeOf(foo, null); foo.getX(); // Uncaught TypeError: foo.getX is not a function 

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо foo.getX() рд╡рд┐рдзрд┐ рдХреЛ рджреЛ рдмрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХрд╛ рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рдЕрд░реНрде рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рд┐рд░реНрдл рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдЬреЗрдПрд╕ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдкрдиреЗ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЧрддрд┐ рджреЗрдирд╛ рдФрд░ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдпрджрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдг рд▓реЛрдб рдХрд░рдирд╛ рдПрдХ рдСрдкрд░реЗрд╢рди рд╣реИ рдЬреЛ рдмрд╣реБрдд рдЖрдо рд╣реИред рдЗрд╕реЗ рд╣рд░ рдмрд╛рд░ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

 class Bar {   constructor(x) { this.x = x; }   getX() { return this.x; } } const foo = new Bar(true); const x = foo.getX(); //        ^^^^^^^^^^ 

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдХрд┐ рдХреИрд╕реЗ рдЗрдВрдЬрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдкреЛрдВ рдФрд░ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдирд┐рдпрдорд┐рдд, рдХрд╕реНрдЯрдо рдЧреБрдгреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ? рдКрдкрд░, рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
Foo рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ GetX рд╡рд┐рдзрд┐ рд▓реЛрдб рд╣реЛ рд░рд╣реА рд╣реИ

рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  1. foo рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдореЗрдВ getX рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ foo рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛рдиреЗ рдпрд╛ рдЧреБрдгреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмрджрд▓рдХрд░ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  2. foo рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЕрднреА рднреА рдореВрд▓ Bar.prototype ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк foo Object.setPrototypeOf() рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рд╡рд┐рд╢реЗрд╖ _proto_ рдЧреБрдг рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЕрд╕рд╛рдЗрди рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
  3. Bar.prototype рдлреЙрд░реНрдо рдореЗрдВ Bar.prototype рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, Bar.prototype рдЧреБрдгреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ, рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ, рдпрд╛ рдЙрдирдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА 1 рдЪреЗрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП 2 рдЪреЗрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдЙрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдЖрдкрдХреЛ 1 + 2 рдПрди рдЪреЗрдХ (рдЬрд╣рд╛рдВ рдПрди рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ) рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛рдлреА рдХрдо рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдзрд╛рд░рдг DOM рддрддреНрд╡реЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

 const anchor = document.createElement('a'); // HTMLAnchorElement const title = anchor.getAttribute('title'); 

рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ HTMLAnchorElement рдФрд░ рд╣рдо рдЗрд╕рдХреА getAttribute() рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВред HTML рд▓рд┐рдВрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЗрд╕ рд╕рд░рд▓ рддрддреНрд╡ рдХреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ 6 рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢рд╛рдорд┐рд▓ рд╣реИрдВ! рдЕрдзрд┐рдХрд╛рдВрд╢ рджрд┐рд▓рдЪрд╕реНрдк DOM рд╡рд┐рдзрд┐рдпрд╛рдБ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк HTMLAnchorElement ред рд╡реЗ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдиреАрдЪреЗ рд╕реНрдерд┐рдд рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд╣реИрдВред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛

Element.prototype getAttribute() рдкрджреНрдзрддрд┐ Element.prototype рдореЗрдВ рдорд┐рд▓ Element.prototype ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░, рдЬрдм anchor.getAttribute() рдкрджреНрдзрддрд┐ рдХреЛ anchor.getAttribute() , рдЗрдВрдЬрди рдХреЛ рдирд┐рдореНрди рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  1. anchor рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ getAttribute рд▓рд┐рдП рд╕реНрд╡рдпрдВ рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИред
  2. рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕реАрдзрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк HTMLAnchorElement.prototype ред
  3. рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ HTMLAnchorElement.prototype рдореЗрдВ рдПрдХ HTMLAnchorElement.prototype рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред
  4. рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк HTMLElement.prototype ред
  5. рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред
  6. рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдЕрдЧрд▓рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк Element.prototype ред
  7. рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдХрд┐ рдПрдХ getAttribute рд╡рд┐рдзрд┐ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, 7 рдЪреЗрдХ рдпрд╣рд╛рдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдгреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪреЗрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдпрд╛рдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рд╣рдо getX рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ getX рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо 3 рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ:

 class Bar {   constructor(x) { this.x = x; }   getX() { return this.x; } } const foo = new Bar(true); const $getX = foo.getX; 

рдкреНрд░рддреНрдпреЗрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЬрд┐рд╕ рдЪреАрдЬ рдХреА рддрд▓рд╛рд╢ рд╣реИ рдЙрд╕рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрдХ рдХреЛ рдХрдо рдХрд░рдХреЗ рдЪреЗрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЗрдВрдЬрди рдПрдХ рд╕рд░рд▓ рдЪрд╛рд▓ рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реНрд╡рдпрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрдВрдЬрди рдЗрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрджрд░реНрдн рднрдВрдбрд╛рд░рдг

рдкреНрд░рддреНрдпреЗрдХ рдлреЙрд░реНрдо рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдЬрдм рднреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк foo рдмрджрд▓рддреЗ рд╣реИрдВ, рдЗрдВрдЬрди рд╡рд╕реНрддреБ рдХреЗ рдирдП рдЖрдХрд╛рд░ рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдмрд╕ рдЗрд╕рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдВрдХ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо 1 + 2N рд╕реЗ рдЪреЗрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ 1 + N рддрдХ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЧрддрд┐ рджреЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рдЕрднреА рднреА рдХрд╛рдлреА рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмреАрдЪ рдПрдХ рд░реИрдЦрд┐рдХ рд╕рдВрдмрдВрдз рд╣реИред рдЗрдВрдЬрдиреЛрдВ рдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рддрдВрддреНрд░реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЪреЗрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рд▓рдВрдмрд╛рдИ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдЬреЛ рдПрдХ рд╕реНрдерд┐рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрдХреНрдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╣реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рдХрдИ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡реИрдзрддрд╛ рд╕рдВрдкрддреНрддрд┐


V8 рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд░реВрдкреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЕрдиреНрдп рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде) рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рд░реВрдкреЛрдВ рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде ValidityCell рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИред
рд╡реИрдзрддрд╛ рд╕рдВрдкрддреНрддрд┐

рдлреЙрд░реНрдо рд╕реЗ рдЬреБрдбрд╝реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рдпрд╛ рдХрд┐рд╕реА рднреА рдУрд╡рд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рдЗрд╕ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдЕрдорд╛рдиреНрдп рдШреЛрд╖рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрдВрддреНрд░ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, V8 рдПрдХ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЪрд╛рд░ рдлрд╝реАрд▓реНрдб рд╣реЛрддреЗ рд╣реИрдВ: ValidityCell , Prototype , Shape , Offset ред
рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдлрд╝реАрд▓реНрдбреНрд╕

рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХреЗ "рд╡рд╛рд░реНрдорд┐рдВрдЧ рдЕрдк" рдХреЗ рджреМрд░рд╛рди, рдкрд╣рд▓реА рдмрд╛рд░ рдХреЛрдб рдЪрд▓рдиреЗ рдкрд░, V8 рдСрдлрд╕реЗрдЯ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, Bar.prototype рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, Bar.prototype , рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдХрд╛рд░ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ foo )) , рдФрд░, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддрддреНрдХрд╛рд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╡рд░реНрддрдорд╛рди ValidityCell рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ, рдПрдХ рд▓рд┐рдВрдХ рдЬреЛ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рднреА Bar.prototype )ред

рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрдВрдЬрди рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ ValidityCell рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдпрджрд┐ ValidityCell рдЕрднреА рднреА рдорд╛рдиреНрдп рд╣реИ, рддреЛ рдЗрдВрдЬрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЦреЛрдЬ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╣реЗрдЬреЗ рдЧрдП рдСрдлрд╕реЗрдЯ рдХрд╛ рд╕реАрдзреЗ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИред

рдЬрдм рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рдПрдХ рдирдпрд╛ рд░реВрдк рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реА ValidityCell рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрдорд╛рдиреНрдп рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдЖрдк рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЦрд░рд╛рдм рдкреНрд░рджрд░реНрд╢рди рд╣реЛрддрд╛ рд╣реИред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо

рдпрджрд┐ рд╣рдо DOM рддрддреНрд╡ рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдкрд░рд┐рд╡рд░реНрддрди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Object.prototype рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ, рди рдХреЗрд╡рд▓ Object.prototype рд▓рд┐рдП рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рдиреЗ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░реЗрдЧрд╛, рдмрд▓реНрдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЗрд╕рдХреЗ рдиреАрдЪреЗ рд╕реНрдерд┐рдд рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рднреА рд╣реЛрдЧрд╛ред EventTarget.prototype , Node.prototype , Element.prototype , рдФрд░ рдЗрд╕реА рддрд░рд╣, HTMLAnchorElement.prototype рдареАрдХ рдиреАрдЪреЗред
рдСрдмреНрдЬреЗрдХреНрдЯ.рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдирд┐рд╣рд┐рддрд╛рд░реНрде

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди Object.prototype рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдЧрдВрднреАрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдирд╛ред рдпрд╣ рдордд рдХрд░реЛред

рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЙрдкрд░реЛрдХреНрдд рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Bar рдХреНрд▓рд╛рд╕, рдФрд░ loadX рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬреЛ Bar рдХреНрд▓рд╛рд╕ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рд╣рдо loadX рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдИ рдмрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдЙрд╕реА рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

 function loadX(bar) {   return bar.getX(); // IC  'getX'   `Bar`. } loadX(new Bar(true)); loadX(new Bar(false)); // IC  `loadX`    `ValidityCell`  // `Bar.prototype`. Object.prototype.newMethod = y => y; // `ValidityCell`  IC `loadX`   //    `Object.prototype`  . 

loadX рдореЗрдВ loadX рдХреИрд╢ рдЕрдм loadX рд▓рд┐рдП ValidityCell рдХреЛ Bar.prototype ред , , Object.prototype тАФ JavaScript, ValidityCell , - , .

Object.prototype тАФ , - , . , :

 Object.prototype.foo = function() { /* тАж */ }; //    : someObject.foo(); //     . delete Object.prototype.foo; 

Object.prototype , - , . , . - , . , ┬л ┬╗, , .

, , . . Object.prototype , , - .

, тАФ , JS- - , . . , , . , , , .

рдкрд░рд┐рдгрд╛рдо


, JS- , , , -, ValidityCell , . JavaScript, , ( , , , ).

рдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! , - , JS, ?

Source: https://habr.com/ru/post/hi422321/


All Articles