рд╢реБрдн рджреЛрдкрд╣рд░ рджреЛрд╕реНрддреЛрдВ! рдкрд╛рдареНрдпрдХреНрд░рдо
"рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╕реБрд░рдХреНрд╖рд╛" рдХреЛ рд▓реЙрдиреНрдЪ
рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХреЗ рдЕрдВрддрд┐рдо рднрд╛рдЧ "рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рдореВрд▓ рддрддреНрд╡: рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рдЕрдиреБрдХреВрд▓рди" рд╕рд╛рдЭрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ
рдпрд╣рд╛рдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рд╣рдо рдЖрдкрдХреЛ рдпрд╣ рднреА рдпрд╛рдж рджрд┐рд▓рд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХрд╛рд╢рди рдЗрди рджреЛ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╣реИ:
тАЬрдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреЗ рдореВрд▓ рддрддреНрд╡: рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдФрд░ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢рд┐рдВрдЧред рднрд╛рдЧ 1 " ,
" рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ: рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдФрд░ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢рд┐рдВрдЧред рднрд╛рдЧ 2 тАЭ ред
рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрдЕрдм рдЬрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рддреНрд╡рд░рд┐рдд рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреНрд▓рд╛рд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
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
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреИрд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдлрд╝реАрд▓реНрдб рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВред
рдЖрдЗрдП
Bar
рдПрдХ рдирдП рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╣рдо
foo
рдХрд╣реЗрдВрдЧреЗред
const foo = new Bar(true);
рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдореЗрдВ рдПрдХ рдПрдХрд▓
'x'
рдЧреБрдг рд╣реИред
foo
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
Bar.prototype
, рдЬреЛ
Bar
рдХреНрд▓рд╛рд╕ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдЗрд╕
Bar.prototype
рдХрд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд░реВрдк рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдЧреБрдг
'getX'
, рдЬрд┐рд╕рдХрд╛ рдорд╛рди рдлрд╝рдВрдХреНрд╢рди
'getX'
рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдЬрдм рд░рд┐рдЯрд░реНрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
this.x
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
Bar.prototype
рд╣реИ, рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднрд╛рд╖рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
Object.prototype
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╣реИ, рдЬрдмрдХрд┐ рдЗрд╕рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
null
ред

рдЬрдм рдЖрдк рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╣реА рд░реВрдк рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рд╕рдордЭ рдЪреБрдХреЗ рд╣реИрдВред рджреЛрдиреЛрдВ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╣реА
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();
рдкрд╣рд▓рд╛ рдХрджрдо рд╡рд┐рдзрд┐ рдХреЛ рд▓реЛрдб рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ)ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рдЪрд░рдг рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдХрд╛ рдореВрд▓реНрдпред рдЖрдЗрдП рдкрд╣рд▓реЗ рдЪрд░рдг рдкрд░ рдПрдХ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдЬрд╣рд╛рдБ
getX
рд╡рд┐рдзрд┐ рдХреЛ
foo
рдЙрджрд╛рд╣рд░рдг рд╕реЗ
getX
рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрдВрдЬрди
foo
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдлрд╛рд░реНрдо
foo
рдореЗрдВ рдХреЛрдИ
'getX'
, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рд╣рдо
Bar.prototype
, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдлреЙрд░реНрдо рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рд╢реВрдиреНрдп рдСрдлрд╕реЗрдЯ рдкрд░
'getX'
рд╕рдВрдкрддреНрддрд┐ рд╣реИред рд╣рдо
Bar.prototype
рдореЗрдВ рдЗрд╕ рдСрдлрд╝рд╕реЗрдЯ рдХрд╛ рдорд╛рди
Bar.prototype
рдФрд░
JSFunction getX
рдХреЛ
JSFunction getX
рдЬрд┐рд╕реЗ рд╣рдо рдЦреЛрдЬ рд░рд╣реЗ рдереЗред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрди рд▓рд┐рдВрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const foo = new Bar(true); foo.getX();
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ
foo.getX()
рджреЛ рдмрд╛рд░, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рдЗрд╕рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЕрд░реНрде рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕реАрд▓рд┐рдП, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рддреЗрдЬ рдХрд░рдирд╛ рдирд┐рдпрдорд┐рдд рдЗрдВрдЬрди рдХреЗ рдЧреБрдгреЛрдВ рдХреА рдЕрдкрдиреА рдкрд╣реБрдВрдЪ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рднреА рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реИред
рд╣рд░ рд░реЛрдЬрд╝ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдг рд▓реЛрдб рдХрд░рдирд╛ рдПрдХ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рди рд╣реИ: рдРрд╕рд╛ рд╣рд░ рдмрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдПрдХ рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ!
class Bar { constructor(x) { this.x = x; } getX() { return this.x; } } const foo = new Bar(true); const x = foo.getX();
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА рдХрд┐ рдЗрдВрдЬрди рдХреИрд╕реЗ рд░реВрдкреЛрдВ рдФрд░ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдорд┐рдд рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдгреЛрдВ рдХреЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдКрдкрд░ рд╕реЗ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрд╛рд░-рдмрд╛рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд╕рд╛рде рдЬрд▓реНрджреА рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреАрди рдЪреАрдЬреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛:
- рдлреЙрд░реНрдо
foo
рдореЗрдВ 'getX'
рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдпрд╛ рд╣рдЯрд╛рдХрд░ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдмрджрд▓рдХрд░ рдлреВ рд╡рд╕реНрддреБ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред - рдлреВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЕрднреА рднреА рдореВрд▓
Bar.prototype
ред рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рдиреЗ Object.setPrototypeOf()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╛ рд╡рд┐рд╢реЗрд╖ _proto_
рдЧреБрдг рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк foo
рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ред Bar.prototype
рдлреЙрд░реНрдо рдореЗрдВ 'getX'
Bar.prototype
'getX'
рдФрд░ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдпрд╛ рд╣рдЯрд╛рдХрд░ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдмрджрд▓рдХрд░ Bar.prototype
рдХреЛ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдПрдХ рдЪреЗрдХ рдХреЛ рд╕реНрд╡рдпрдВ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рджреЛ рдФрд░ рдЪреЗрдХ рдХреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╢рд╛рдорд┐рд▓ рд╣реИред 1 + 2 рдПрди рдЪреЗрдХ, рдЬрд╣рд╛рдВ рдПрди рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЙрдерд▓реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрдВрдЬрдиреЛрдВ рдХреЛ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдпрдорд┐рдд рдбреЛрдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
const anchor = document.createElement('a');
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ
HTMLAnchorElement
рдФрд░ рд╣рдо
getAttribute()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рд░рд▓ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 6 рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢рд╛рдорд┐рд▓ рд╣реИрдВ! DOM рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рддрд░реАрдХреЗ рдЬреЛ рд╣рдореЗрдВ рд░реВрдЪрд┐ рджреЗрддреЗ рд╣реИрдВ, рд╡реЗ
HTMLAnchorElement
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ
HTMLAnchorElement
, рдмрд▓реНрдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╣реИрдВред

Element.prototype
getAttribute()
рдкрджреНрдзрддрд┐
Element.prototype
ред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рд░ рдмрд╛рд░ рдЬрдм рд╣рдо
anchor.getAttribute()
, рддреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рдХреА рдЬрд░реВрд░рдд рд╣реИ:
- рдЬрд╛рдБрдЪ рд▓реЗрдВ рдХрд┐
'getAttribute'
рдкреНрд░рддрд┐ 'getAttribute'
рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реИ; - рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЕрдВрддрд┐рдо рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
HTMLAnchorElement.prototype
; - рд╡рд╣рд╛рдВ
'getAttribute'
рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ; - рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЕрдЧрд▓рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
HTMLElement.prototype
; 'getAttribute'
рд╕реЗ 'getAttribute'
рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ 'getAttribute'
;- рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЕрдЧрд▓рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
Element.prototype
; - рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдЗрд╕рдореЗрдВ
'getAttribute'
рдореМрдЬреВрдж рд╣реИред
рдХреБрд▓ 7 рдЪреЗрдХред рдЪреВрдВрдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдб рд╡реЗрдм рдкрд░ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЧреБрдгреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЪреЗрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЬрди рд╡рд┐рднрд┐рдиреНрди рдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдкреБрд░рд╛рдиреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд▓реМрдЯрдирд╛ рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдХреЗрд╡рд▓ рддреАрди рдЪреЗрдХ рдХрд┐рдП рдереЗ рдЬрдм
foo
рд▓рд┐рдП
'getX'
рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
class Bar { constructor(x) { this.x = x; } getX() { return this.x; } } const foo = new Bar(true); const $getX = foo.getX;
рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрдкрддреНрддрд┐ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд░реВрдкреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рд╕рдВрдкрддреНрддрд┐ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪреЗрдХ рдкреЗрд╢ рдХрд░рдХреЗ рдЪреЗрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЗрдВрдЬрди рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЪрд╛рд▓ рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд▓рд┐рдВрдХ рдХреЛ рд╕реНрд╡рдпрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЗрдВрдЬрди рдЗрд╕реЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред

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

рдпрд╣
ValidityCell
рд╣рд░ рдмрд╛рд░ рдЕрдХреНрд╖рдо рд╣реЛрддреА рд╣реИ рдЬрдм рдХреЛрдИ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдпрд╛ рдЗрд╕рдХреЗ рдКрдкрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдмрд╛рдж рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, V8 рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХреЛ рдЪрд╛рд░-рдлрд╝реАрд▓реНрдб рд╕реНрдерд╛рди рдкрд░ рд░рдЦрддрд╛ рд╣реИ:

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

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп
Object.prototype
рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдПрдХ рднрдпрд╛рдирдХ рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рд╣реИред рдпрд╣ рдордд рдХрд░реЛ!
рдЖрдЗрдП, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрд╣реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ
Bar
рд╡рд░реНрдЧ рдФрд░ рдПрдХ
loadX
рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЯрд╛рдЗрдк
Bar
рдХреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╣рддрд╛ рд╣реИред рд╣рдо рдПрдХ рд╣реА рд╡рд░реНрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде
loadX
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдИ рдмрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВред
class Bar { } function loadX(bar) { return bar.getX();
loadX
рдореЗрдВ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдЕрдм
loadX
рд▓рд┐рдП
ValidityCell
рдХреЛ
Bar.prototype
ред рдпрджрд┐ рдЖрдк рддрдм рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (
Object.prototype
)
Object.prototype
, рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рднреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рдЬрдбрд╝ рд╣реИ, рддреЛ
ValidityCell
рдЕрдорд╛рдиреНрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореМрдЬреВрджрд╛ рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдЧрд▓реА рдмрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЦрд░рд╛рдм рдкреНрд░рджрд░реНрд╢рди рд╣реЛрдЧрд╛ред
Object.prototype
рдХреЛ рдмрджрд▓рдирд╛ред
Object.prototype
рд╣рдореЗрд╢рд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдордп рд▓реЛрдб рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ:
Object.prototype.foo = function() { };
рд╣рдо
Object.prototype
рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рднреА рдЗрдирд▓рд╛рдЗрди рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреИрд╢ рдХреЛ рдЕрдорд╛рдиреНрдп рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдХреБрдЫ рдХреЛрдб рдЪрд▓рд╛рдПрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрдВрдЬрди рдХреЛ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдлрд┐рд░, рдЕрдВрдд рдореЗрдВ, "рд╕рдлрд╛рдИ" рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдзрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдерд╛ред
рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдлрд╛рдИ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд╣реИ рдирд╛? рдЦреИрд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреЛ рдФрд░ рдЦрд░рд╛рдм рдХрд░реЗрдЧрд╛! рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ
Object.prototype
рдкрд░рд┐рд╡рд░реНрддрди
Object.prototype
, рдЗрд╕рд▓рд┐рдП рд╕рднреА рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдлрд┐рд░ рд╕реЗ рдЕрдХреНрд╖рдо рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрдВрдЬрди рдХреЛ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рд╕реЗ рдлрд┐рд░ рд╕реЗ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЗрдирд╛ ред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рд┐рд░реНрдл рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдзрд┐ рдЦреЛрдЬреЛрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрдВрдЬрди рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдВ! рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд░реЗрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдЕрдорд╛рдиреНрдп рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ!
рд╣рдо рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг
рд╣рдордиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреИрд╕реЗ рдлрд╛рд░реНрдо, рдЗрдирд▓рд╛рдЗрди рдХреИрд╢ рдФрд░ рд╡реИрдзрддрд╛ рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВред рдЗрд╕ рдЬреНрдЮрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рд╕рдордЭ рдЧрдП рдХрд┐ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП: рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВ! (рдпрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд░реЗрдВ)ред
Part
рдкрд╣рд▓рд╛ рднрд╛рдЧрдХреНрдпрд╛ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреА рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдереА? рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред