рдЬрдм рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрднреА-рдХрднреА рдкреВрд░реНрд╡рдЬреЛрдВ рдХреА рд╡рд┐рдзрд┐ (рдореВрд▓ рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐) рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╣реЛрддреА рд╣реИ - рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ (рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ) рдпрд╛ рд╡рдВрд╢рдЬ рд╡рд┐рдзрд┐ рдореЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдЗрд╕реЗ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди (рд╡рд┐рдзрд┐) рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╕рдВрдХреЗрддрди рдХреЗ рд╕рд╛рде рддрд╛рдХрд┐ рдирд╛рдо рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреАрдврд╝реА рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ ("рдорд╣рд╛рди-рдорд╣рд╛рди-рдорд╣рд╛рди рдирд╣реАрдВ", рд▓реЗрдХрд┐рди "рдорд╣рд╛рди -3 рдмрд╛рд░")ред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рд╡рд┐рдзрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╕рдордп рдиреНрдпреВрдирддрдо рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдЧреБрдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ:
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ ред рдкреВрд░реНрд╡рдЬ рдХреА рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП, рд╡рд╣
.рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рддрд╛ рд╣реИред
(рд╡реЗ рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐
рдХреНрд░реЙрдХрдлреЛрд░реНрдб рджреНрд╡рд╛рд░рд╛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзрд╛рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реЗ
рд▓реЛрдХрдкреНрд░рд┐рдп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рдорд┐рд▓рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдмрд╛рд╣рд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд┐рдлрд╛рдпрддреА рд╣реИред рд▓реЗрдЦрдХ рдЕрдЬреНрдЮрд╛рдд рд╣реИред)
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рд╣реИред
function inherit2(Inherited, Parent){
(рдЬреЛ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдорд╛рдиреНрдпрддрд╛ рджреАред) рдпрд╣
javascript.ru/tutorial/object/inheritance рдореЗрдВ рдмрд╣реБрдд рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рдереА, рдФрд░ рдкреИрддреГрдХ рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рднреА рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рд╣рдордиреЗ "рдЪрд╛рд░реЛрдВ рдУрд░" рдХреЗ рд╕рд╛рде "рдЦреЗрд▓рд╛"ред
.constructor "рд▓рд┐рдВрдХ рдХреЛ рд╕реНрд╡рдпрдВ рдмрдВрдж рдХрд░рдХреЗ рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдкрд╛рд╕ рд╕рд╣реА
.constructor рд╕рдВрдкрддреНрддрд┐ рд╣реЛред рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдЦреЛ рджреА (рдФрд░ рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рдерд╛, рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдирд╣реАрдВ рдерд╛) рдФрд░ рдореВрд▓ рд╡рд░реНрдЧ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ "рдмреЛрдирд╕"
.рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдкреИрддреГрдХ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХрд╛ рдЕрд░реНрде рд╣реИ "рдЕрдзрд┐рд▓реЗрдЦрд┐рдд" (рдкрд░рд┐рд░рдХреНрд╖рдг) рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдпрджрд┐ рд╡рдВрд╢ рдореЗрдВ рдЙрд╕рдХрд╛ рдирд╛рдо рдкреВрд░реНрд╡рдЬреЛрдВ рдореЗрдВ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдиреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рд╕рд░рд▓реАрдХреГрдд (рдпрд╛ рд╕рд┐рд░реНрдл рдкрд┐рдЫрд▓реЗ, рдпрд╛ рд╕рд╛рдорд╛рдиреНрдп) рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ - рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдПрдВред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рд╡рд┐рдзрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рдиреА рдереА, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдкреБрд░рд╛рдиреА рдкрджреНрдзрддрд┐ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЬреЛрдбрд╝реЗрдВред (рдЗрд╕рд▓рд┐рдП, рдЧреБрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрд╡рдЬреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ - рдЧреБрдг рд╣рдореЗрд╢рд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВред) рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ "рдмреЛрдирд╕" рд╕рдВрдкрддреНрддрд┐ "
.рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ " рдХрд╛рдо рдореЗрдВ рдЖрддреА рд╣реИ, рдЬреЛ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИред
рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП A => B => C => c01.MethodX
function A(){this.xa =1;} function B(){this.xb =1;} function C(){this.xc =1;} A.prototype.MethodX ='protoA'; inherit2(B, A); B.prototype.MethodX ='protoB'; B.prototype.xx ='protoX'; inherit2(C, B); C.prototype.MethodX = 'protoC'; var c01 = new C();
рд╣рдореЗрдВ рдкреВрд░реНрд╡рдЬ рд╡рд┐рдзрд┐ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рдРрд╕реЗ рддрд░реАрдХреЗ рдорд┐рд▓рддреЗ рд╣реИрдВ:
Alert = console.log; Alert(c01.MethodX);
(рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╣
рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, inherit2 рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ () (рдпрд╣
рдлрд╛рдпрд░рдмрдЧ рдХреЗ рд╕рд╛рде рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЪреЛрдЯ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛ред)
рдЗрд╕ рддрд░рд╣ рдХреА рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ рдФрд░ рдЕрдиреБрдпрд╛рдпрд┐рдпреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ: рдкрд╣рд▓реЗ рд╣рдо
.constructor.prototype рд╕реЗ
рдЧреБрдЬрд╝рд░рддреЗ рд╣реИрдВ , рдФрд░ рдлрд┐рд░
.superclass рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ; рд╣рдо рдкреВрд░реНрд╡рдЬреЛрдВ рдХреА рдкрд╣реБрдВрдЪ рдХреА рдЧрд╣рд░рд╛рдИ рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджреЗ рд╕рдХрддреЗред рд╕рднреА рдореЗрдВ, рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдХрд╛рд░реНрдп рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
object.ancestor(name, level) -
рдЬрд┐рд╕реЗ рд╕рдмрд╕реЗ рдЧрд╣рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ "рдЕрдзрд┐рд▓реЗрдЦрд┐рдд" рд╡рд┐рдзрд┐рдпреЛрдВ (рдФрд░ рдкрдбрд╝реЛрд╕реА рддрд░реАрдХреЛрдВ рдХреА рдУрд░ рдХреЛрдИ рднреА рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рдХреЗ рд╕рд╛рде рдирдП рддрд░реАрдХреЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдЫреЛрдЯреА рд╕реА рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд░рд╣реЗрдЧреА рдХрд┐ рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдВрджрд░реНрдн (
рдпрд╣ ) "рд╕рдореГрджреНрдз" рд╣реЛрдЧрд╛, рдЬреЛ рдмрд╣реБрдд рдЕрдВрддрд┐рдо рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧреЛрдВ (рдП рдФрд░ рдмреА) рдХреЛ рдЕрднреА рддрдХ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдФрд░ рдЖрдЧреЗ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрдХ рдХреА рдЗрдЪреНрдЫрд╛ рдпрд╛ рдЕрдирд┐рдЪреНрдЫрд╛ред рдкреВрд░реНрд╡рдЬ рд╡рд┐рдзрд┐ред рд╣рдо рдЗрд╕реЗ рдкреБрд░рд╛рдиреЗ рдЬрдорд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЖрджрд┐рдо рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдордЭрдХрд░ рдЕрдЧреНрд░рд┐рдо рд░реВрдк рд╕реЗ рджреЗрдЦрднрд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред
рд╣рдо "рд╕реБрдкрд░рдХреНрд▓рд╛рд╕" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рднреА рдмрджрд▓ рджреЗрдВрдЧреЗ (рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рд╡рд╛ рд╕реЗ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ "рдкреВрд░реНрд╡рдЬ рд╡рд░реНрдЧ"
_anc (рдкреВрд░реНрд╡рдЬ) рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдирд╣реАрдВ)ред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЕрдВрддрд┐рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рддрд░реНрдХ рдХреЛ рд╕рд░рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдореИрдВ рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛
c01 ['рдореЗрдердбрдПрдХреНрд╕'] | c01.ancestor ('MethodX', 0) |
c01.constructor.prototype ['MethodX'] | c01.ancestor ('MethodX') |
c01.constructor.prototype._anc.prototype ['MethodX'] | c01.ancestor ('рдореЗрдердбрдПрдХреНрд╕', 2) |
c01.constructor.prototype._anc.prototype._anc.prototype ['MethodX'] | c01.ancestor ('рдореЗрдердбрдПрдХреНрд╕', 3) |
... |
рдЙрд╕реА рд╕рдордп,
c01.constructor c01._anc рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдордиреЗ рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ
рдирдП рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред
рдирдП рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди
рдмрдирд╛рдПрдЧрд╛ ( рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди
рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рд╣реЛрддреА рд╣реИ
) () , рд▓реЗрдХрд┐рди рд╣рдо рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ
рдирдП рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рдЕрднреА рдХреЗ рд▓рд┐рдП?)ред
рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
function ancestor(name, level, constr){ level = level || (level ==0 ? 0 : 1); var t =this; return level <= 1 ? (level ? constr && constr.prototype[name] || t.constructor.prototype[name] : t[name]) : arguments.callee.call(this , name , level -1 , constr && (constr.prototype._anc || constr.prototype.constructor) || t._anc
Inherit3 () рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рднреА
._anc () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред
function inherit3(Inherited, Parent){ var F = function(){}; F.prototype = Parent.prototype; (Inherited.prototype = new F())._anc = Parent; Inherited.prototype.constructor = Inherited; }
рдкреВрд░реНрд╡рдЬреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рддрд░реНрдХред
рд╣рдо рд╡рд┐рдзрд┐ рдХреА рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдУрд░ рдирд╣реАрдВ рд░реБрдЦ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рдкрд╣рд▓реЗ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рд╕реНрддрд░ рдХреЗ рд╕реНрддрд░ рдкрд░ рдерд╛ред
рдпрджрд┐ рд╣рдореЗрдВ рдкрджреНрдзрддрд┐ рдХреА рд╕рдЯреАрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд┐рдЫрд▓реА рдкреАрдврд╝реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рдЪрд░рдгреЛрдВ рдХреЗ
рд╕реНрддрд░ рдкрд░ рдЙрдард╛рдП рдЧрдП рдореВрд▓ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдирд╡реАрдирддрдо рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред
рдпрджрд┐ рдХреЛрдИ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ "рджрдпрд╛рд▓реБрддрд╛ рдХрд╛ рдмрдо" (рдПрдХ рдЕрд╕рдВрддреБрд╖реНрдЯ) рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд▓рд╛рдкрддрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд╣рд▓рд╛ рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдкрд░
рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо рдПрдХ рджрдпрд╛рд▓реБ рдмрдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХреБрдЫ рдирдХрд▓реА рдЧреБрдгреЛрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬрдм рд╕рдВрдкрддреНрддрд┐
constr.prototype._anc рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, (
constr.prototype._anc ||
constr.fail.fail ) рдпрд╛ рдмрд╕ (
constr.prototype._anc )
рд╡рд┐рдлрд▓ рд╣реЛрддреА рд╣реИред ред
function A(){this.prop =1;} function B(){this.prop =1;} function C(){this.prop =1;} A.prototype.protoProp ='protoA'; inherit3(B, A); B.prototype.protoProp ='protoB'; inherit3(C, B); C.prototype.protoProp ='protoC'; var c01 = new C(); A.prototype.ancestor = ancestor; Alert(c01['protoProp'], c01.ancestor('protoProp', 0))
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреЗрдЦреЗрдВ, рдлрд╛рдпрд░рдмрдЧ рдореЗрдВ рдЯреНрд╡рд┐рд╕реНрдЯ -
рдПрдХ рдбреЗрдореЛ рдкрд░ (рдпрд╣ рдПрдХ рджрдпрд╛ рдмрдо рдХреЗ рд╕рд╛рде рд╣реИ)ред
рд╡рдВрд╢ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рдмрд╛рдж рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдХрд╣реАрдВ рдФрд░ рдирд╣реАрдВ -
рдЗрдирд╣реЗрд░рд┐рдЯ 2 рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдкрд░рд┐рдгрд╛рдо
() ред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд░реНрд╡рдЬ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╣реАрдВ рднреА рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╕рднреА рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмрд╛рдж
рдкреВрд░реНрд╡рдЬ () рд╡рд┐рдзрд┐ рдХреЛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рдард╣рд░рд╛рддреЗ рд╣реБрдП рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рд░ рдЬрдЧрд╣ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рди рдХрд┐ рддрд░реАрдХреЛрдВ - рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ
c01.ancestor('protoMethod', 3)
рдХреНрдпрд╛ рд╕реБрдзрд╛рд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ?
рд╕рдм рдХреБрдЫ, рд▓реЗрдЦ рдХрд╛ рдХрд╛рд░реНрдп рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдореИрдВ рд╕реЛрдиреЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рдирд╣реАрдВ, рд╡рд┐рдХрд╛рд╕ рдХрднреА рдирд╣реАрдВ рд░реБрдХрддрд╛ рд╣реИ, рдФрд░ рд╕рдордЭрджрд╛рд░ рдкрд╛рдардХ рдХреЛ 2 рд╡рд┐рд╖рдо рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХреА рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдиреИрддрд┐рдХ рд╕рдВрддреБрд╖реНрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реАред рдЗрд╕ рд╡рд┐рдзрд┐ рдореЗрдВ рдХреНрдпрд╛ рднреНрд░рдо рд╣реИ рдХрд┐ рдкреВрд░реНрд╡рдЬ рд╕реЗ рд╡рдВрд╢рдЬ рддрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрдерд╛рдкрди рд╣реИред рджрд░рдЕрд╕рд▓, рдЕрдХреНрд╕рд░ рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд (рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд) рд╣реЛрддреА рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╡рд┐рд░рд╛рд╕рдд рдХреА рддреАрд╕рд░реА рдордВрдЬрд┐рд▓ рдкрд░ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдорд┐рд▓рддреА рд╣реИрдВ рдФрд░ рд╡рд┐рдзрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╣рдордиреЗ рдЕрдкрдиреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рддреИрдпрд╛рд░ рдХреЛрдб рдХреНрдпреЛрдВ рдирд╣реАрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрд░реНрджреНрдз-рддреИрдпрд╛рд░ рдЙрддреНрдкрд╛рджреЛрдВ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЛрдб рд╕реЛрдЪ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рдПрдХреНрд╕реЗрд╕ рд╡рд┐рдзрд┐ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдХрдВрдХрд╛рд▓ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реБрдВрджрд░рд┐рдпреЛрдВ рдФрд░ рдЕрдиреНрдп рдорд╛рдВрд╕ рдХреЗред рдХрдВрдХрд╛рд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдмреЗрд╣рддрд░ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИ рдЬрдм рдЙрд╕ рдкрд░ рдХреЛрдИ рдорд╛рдВрд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рд╡рд╛рдВрдЫрд┐рдд рд╕реБрдзрд╛рд░ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдпрд╣ рдЧрд▓рдд рд╣реЛрдЧрд╛), рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдирдП рдЧреБрдг рдЬреЛрдбрд╝реЗрдВред рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдХреЗ рдмрд╛рдж рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдПрдХреНрд╕рдЯреЗрдВрд╢рди () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ
рднреАрдЦ рдорд╛рдБрдЧрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, "рд╣рд╛рде рдореЗрдВ" рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдорд╛рд░реЛрд╣ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрд╣ jQuery рдФрд░ рдХрдИ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╣реИ, рдпрд╛ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдЕрдкрдиреА рд╡рд┐рд░рд╛рд╕рдд рд╡рд┐рдзрд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЛ рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ,
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреЛрдж рд╕рдХрддреЗ рд╣реИрдВ:
extend = function(obj, extObj){
рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ "рдорд╛рдорд▓реЛрдВ рдХреЗ рдмреАрдЪ рдореЗрдВ" рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдмреАрдЪ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ "
C.prototyp.protoProp = 'protoC; " рд▓реЗрдХрд┐рди рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛
; extend(C.prototype, {protoProp: 'protoC'});
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐
.superclass рдХреА рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ; рдЗрд╕реЗ рдХреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреА рдпрд╣ рд╡рд┐рдзрд┐ рдЗрддрдиреА
рдХрдареЛрд░ рдФрд░ рдХрд┐рдлрд╛рдпрддреА рд╣реИ рдХрд┐ рдпрд╣
рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ , рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ
рдирдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдСрдмреНрдЬреЗрдХреНрдЯ
c01 рдореЗрдВ ред рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЛрдИ рд░рдЪрдирд╛рдХрд╛рд░ рд░рдирдЯрд╛рдЗрдореНрд╕ рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рдХрдареЛрд░рддрд╛ рдХреА рд╣рдореЗрд╢рд╛ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ (рдУрд╣, рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ)ред рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рдЧреБрдг рдореМрдЬреВрдж рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░реЛрдкрд░реНрдЯреА рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рднреА рднрд╛рдЧ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ (рд╡рд╛рд░рд┐рд╕ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реЛ)ред
рдЕрдЧрд▓реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдпрджреНрдпрдкрд┐ рдЗрд╕ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╣рд░ рдХрд╛рд░рдг рд╣реИ, рдпрд╣ рд╕рдм рд╡рд┐рд░рд╛рд╕рдд рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
рдФрд░ рдЗрд╕рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
, рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдмреЗрд╣рддрд░ рд╣реИ ред
рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рд╡рд░реНрдЧреЛрдВ (рд╕рдВрдЧреНрд░рд╣) рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рддрд░реАрдХреЗ рдХреНрдпрд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ?
рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡рд░реНрдЧреЛрдВ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдореЗрдВ рдЖрдИ рдереА, рдЬрд┐рд╕реЗ "рдореВрд▓ рд╡рд░реНрдЧ рдХреА рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ" рд╢рдмреНрджреЛрдВ рд╕реЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
habrahabr.ru/blogs/javascript/40909рдЗрд╕рдиреЗ рдореВрд▓
__parent рд╡рд┐рдзрд┐ рдмрдирд╛рдИ, рдЬреЛ
рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред рдЗрд╕рдореЗрдВ, рдпрджрд┐ рдЖрдк рдкреВрд░реНрд╡рдЬреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рднреА рдХрдИ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрдИ рдФрд░ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
рдорд┐рдХреНрд╕рд┐рди (рдП, рдмреА) - рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмреА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдП,
рдХреНрд▓реЛрди () - рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдХреНрд▓реЛрдирд┐рдВрдЧ,
рд╡рд┐рд╕реНрддрд╛рд░ () - рд╣реИрд╢ рдПрдХреНрд╕рдЯреЗрдВрд╢рди; рдХреЗрд╡рд▓ рдХреБрдЫ рддрд░реНрдХреЛрдВ рдХреЗ рд▓рд┐рдПред
рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдРрд╕реЗ рддрд░реАрдХреЛрдВ рд╕реЗ рдирд╣реАрдВ рдЬреБрдбрд╝рддрд╛ рд╣реИ: ["hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString", "valueOf"] рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рдкреВрд░реНрд╡рдЬреЛрдВ рдХреА рдкрд╣реБрдВрдЪ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг (рд░реЗрдЬрд┐рдЧ рд╕реЗ)
Ejohn.org/blog/simple-javascript-inheritance (рдЬреЙрди
рд░рд┐рдЬрд╝рд┐рдЧ рджреНрд╡рд╛рд░рд╛ рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо) рдореЗрдВ рд╣рдо
_super рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖
рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдХрд╛
рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рд╡рд░реНрдЧ рд╕рдорд╛рдирддрд╛ рдкрд░ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ,
рд╡рд┐рд╕реНрддрд╛рд░ рдПрдХ рд╣реИрд╢ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди "
рдЕрддрд┐рд▓реЗрдЦрд┐рдд "
рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП
_super рд╕рдВрдкрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдгреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рдиреЗ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХреНрд░рд┐рдпрд╛
рд╣реИ - рдПрдХ рд╡рд┐рдзрд┐ рдпрд╛ рд╕рдВрдкрддреНрддрд┐ рдЬреЛ рдЕрдЧрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдкрд░ рдПрдХ рдкреБрди: рд▓рд┐рдЦрдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рдзрд┐ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИ, рддреЛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдПрдХ рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рддрдВрддреНрд░ рд╣реИред рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ "рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб" рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рд░ рдмрд╛рд░ рд╡рд╛рд░рд┐рд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реНрд╡рдЬреЛрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдЙрдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ, рддреЛ рд╣рдо рдкреВрд░реНрд╡рдЬреЛрдВ рдХреА рдУрд░ рд░реБрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рд╣рдо рдирдИ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкреВрд░реНрд╡рдЬреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд░рдирдЯрд╛рдЗрдо рд╡рд┐рдзрд┐ рдЬреЛ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╕реАрдзреЗ рд▓рд┐рдВрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрднреА-рдХрднреА рдЙрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕
.Net рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рдХреА рдХрд┐рд╕реА рднреА рдХреАрдордд рдХреЗ рдмрд┐рдирд╛ рд▓рд┐рдВрдХ (рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рдкрд╣реБрдВрдЪ рд╣реИ ред
рдЬрд┐рд╕ рдирд╛рдпрдХ рдиреЗ рдЕрдХреЗрд▓реЗ рдЪрд╛рд░-рд╕рд┐рд░ рд╡рд╛рд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣рд╛рдЗрдбреНрд░рд╛ рдХреЛ рднрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╡рд╣ рд▓рдЧрднрдЧ рд╣рд░рдХреНрдпреВрд▓рд┐рд╕ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдлреНрд░реЗрдо рдЦреАрдВрдЪрддрд╛ рд╣реИред рд╡рд╣ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ 4 рдкрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ (1 - рдХреЛрдб рдПрдХ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, 2 - рд╡рд╛рд░рд┐рд╕ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, 3 - рдорд┐рд╢реНрд░рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рдЙрдкрдпреЛрдЧ рд╕рдВрднрд╡ рд╣реИ, 4 - рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рджреМрд░рд╛рди рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реНрдЯреНрд░реЛрдХ рдХреЗ рд╕рд╛рде - рдХреЛрдб рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ - рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ 5 рд╡реАрдВ рд╕рдорд╕реНрдпрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рд▓ рдирд╣реАрдВ рд╣реБрдИ рдереА, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдЗрд╕реЗ рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЧреИрд░-рдЕрдзрд┐рднрд╛рд░ рдХрд╣рддреЗ рд╣реИрдВ - рднрд╡рд┐рд╖реНрдп рдХреА рдЫреЛрдЯреА рд╡рд┐рдзрд┐ рд╡рд╛рд░рд┐рд╕реЛрдВ рдХреЗ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╣реИрд╢ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧреАред рдХреЛрдб рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдЙрдЪрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред рджрд░реНрд╢рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖ - рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлреНрд░реЗрдо-рдмрд╛рдп-рдлреНрд░реЗрдо рджреЗрдЦрдиреЗ рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╣рдорд╛рд░реЗ рд╕рдорд╛рдЪрд╛рд░ рдкрддреНрд░реЛрдВ рдХреЗ рдкрдиреНрдиреЛрдВ рдкрд░ рд╣рд░рдХреНрдпреВрд▓рд┐рд╕ рдХреЗ рд░реЛрдорд╛рдВрдЪ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВред