"рдпрд╣ рд╕рд░рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдард┐рди рд╣реИред" рдирд┐рд░реНрдорд╛рддрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, (рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк)ред рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, (__ proto__)ред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░, {{}, рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрдВрдХреНрд╢рди рдиреНрдпреВ рдСрдмреНрдЬреЗрдХреНрдЯ () рдХреЗ рд░реВрдк рдореЗрдВ

рдкрд┐рдЫрд▓реА рдмрд╛рд░ рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреАрдЬреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА:


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

рдЙрджрд╛рд╣рд░рдг 1:
function A() {} A.prototype.x = 10; a = new A(); console.log(ax); //10 console.log(ay); //undefined A.prototype.y = 20; console.log(ay); //20 /*     A.prototype.<>           */ 2: function B() {} B.prototype.x = 10; b = new B(); console.log(bx); //10 console.log(by); //undefined B.prototype = {constructor:B, x:10, y:20}; console.log(bx); //10 console.log(by); //undefined /*    B.prototype = {constructor:B, x:10, y:20};         */ b1 = new B(); console.log(b1.x); //10 console.log(b1.y); //20 /*       */ b instanceof B; //false b1 instanceof B //true /*          */ 


рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВред

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдб рдХреА рдПрдХ рд╕рд░рд▓ рд░реЗрдЦрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
 function A() {} 

рдмрд╣реБрдд рд╣реА рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ: "рд╣рдордиреЗ рдП рдирд╛рдо рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдХреА рд╣реИ"ред рдпрд╣ рд╕рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред
1. рдЬреЗрдПрд╕ рдореЗрдВ рдпрд╣ рдордд рднреВрд▓реЛ - рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдПрдХ рдлрд╝рдВрдХреНрд╢рди, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ (рдпреЗ рдПрдХ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рдЬреБрдбрд╝реА рджреЛ рд╡рд╕реНрддреБрдПрдВ рднреА рд╣реИрдВ)ред
2. рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдорддреМрд░ рдкрд░ рдХрдХреНрд╖рд╛рдПрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИрдВред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, JS рдореЗрдВ рдХреЛрдИ рднреА рдлрдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ)ред рдЙрдиреНрд╣реЗрдВ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рддреАрди (DF (рдлрдВрдХреНрд╢рди рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди), FE (рдлрдВрдХреНрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди), рдлрд╝рдВрдХреНрд╢рди (рдлрдВрдХреНрд╢рди) рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдлрдВрдХреНрд╢рди) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрдкрдиреА рдЦрд╝рд╛рд╕рд┐рдпрддреЗрдВ рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░рддрд╛, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рддреЛ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ рдпрд╛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗ рд▓рд┐рдЦреВрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЪреАрдЬ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдмрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ - рдЖрдВрддрд░рд┐рдХ [[рдирд┐рд░реНрдорд╛рдг]] рдФрд░ [[рдХреЙрд▓]] рдЧреБрдгреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реНрдкрд╖реНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ (рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ)ред
рдпрд╣ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рдзрд┐ [[рдирд┐рд░реНрдорд╛рдг]] рд╣реИ рдЬреЛ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирдП рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред рдпрд╣ рдирдпрд╛ рд╣реИ рдЬреЛ [[рдирд┐рд░реНрдорд╛рдг]] рд╡рд┐рдзрд┐ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред
 function A(){} A(); //   var a = new A(); // -.  (a)  - (A) 

3. рдЖрдк рдпрд╣ рднреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ (DF) рдФрд░ рдЗрд╕реА рддрд░рд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдЕрднреА рддрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред

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



рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ "рдЦрд╛рд▓реА" рд╣реИ (рдареАрдХ рд╣реИ, рд▓рдЧрднрдЧ рдЦрд╛рд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдкрд░ рдЕрдзрд┐рдХ)ред рдКрдкрд░, рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдЗрд╕ рд╡рд╕реНрддреБ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рдм рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред рдпрд╣реА рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ (рдпрджрд┐ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ), рддреЛ рдХреБрдЫ рднреА рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп "рдП" рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╕рдордп:
 function A(){} var a = new A(); 

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

рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ (__ proto__)ред

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



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

рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
 function A() {} //  - (  ┬л┬╗ prototype) A.prototype.x = 10;//    prototype(    )  (x)  10 a = new A(); //     __proto__     prototype  (x==10) console.log(ax); // (x)       (a),     __proto__      prototype. console.log(ay); //   (y)     . A.prototype.y = 20; //   (y)  prototype(     ) console.log(ay); //20 //        __proto__  


рдирд┐рд░реНрдорд╛рддрд╛ред

рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╢рдмреНрдж (рдЦрд╛рд▓реА) рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд░рдЦрд╛ рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛ ("рдЦрд╛рд▓реА" рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк)ред рдЬреИрд╕реЗ, рдЬрдм рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдлрд╝рдВрдХреНрд╢рди A () {} рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ "рдЦрд╛рд▓реА" рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВред рдЕрднреА рднреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдХреБрдЫ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЗ рдмрд╛рдж рд╕реЗ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдПрдХ "рд╕рд░рд▓" рд╡рд╕реНрддреБ рд╣реИ, рд╡рд╕реНрддреБ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ __proto__ рд╕рдВрдкрддреНрддрд┐ () рдирд┐рд░реНрдорд╛рддрд╛ рдлрд╝рдВрдХреНрд╢рди рд╡рд╣рд╛рдВ рдирд┐рд╣рд┐рдд рд╣реИ (рдпрд╣ рд╕рднреА "рд╕рд░рд▓", рд╕рдмрд╕реЗ рдкреНрд░рд╛рдердорд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рддрд╛ рд╣реИ), рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рд╡рд╣рд╛рдБ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд╣рд┐рдд рд╣реИред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рд╡рд╣рд╛рдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рди рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯред рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЗрди рджреЛ рддрдереНрдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ рдкреВрд░рдХ рдХрд░реЗрдВред



рд╕рдм рдХреБрдЫ рдЬреЛ рдЧреНрд░реЗ рдореЗрдВ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрдВ рдЕрднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рдЕрдзрд┐рдХ рд╕рдВрдкреВрд░реНрдг рдЪрд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рд╣реИред рдЖрдЗрдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЖрдВрдХрдбрд╝рд╛ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЦреБрдж рд╣реА рдирд┐рд░реНрдорд╛рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ "рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА", рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ, рдореВрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣реА рд╣реИ, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ рдФрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмреАрдЪ, рдЪрдХреНрд░реАрдпрддрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ - рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдпрджрд┐ рдпрд╣ рдЕрднреА рднреА рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐, рдмрджрд▓реЗ рдореЗрдВ, рдЕрднреА рднреА рдореВрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ), рддреЛ рдЖрдк рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛ рд╕рдВрджрд░реНрдн рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: a.constructor .prototyp.xред рдФрд░ рдЖрдк рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдЧреБрдг рдЬреЛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╕реМрдВрдкреЗ рдЧрдП рдереЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
 function A(){} A.own = 'I am A!'; //     тАФ        a = new A(); a.own //undefined a.constructor.own // 'I am A!'; 

= {} - рдПрдХ рд░рдЪрдирд╛рдХрд╛рд░ рдлрд╝рдВрдХреНрд╢рди (рдирдИ рд╡рд╕реНрддреБ ()) рдХреЗ рд░реВрдк рдореЗрдВред

рдорд╣рд╛рди, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЬрдЧрд╣ рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛ред рдПрдХ "рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЧреНрд░рд╣рдг" рд╣реИ, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдФрд░ рдмрдЪреНрдЪреЗ рдХреЗ рдкрд╛рд╕ рдЗрд╕ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдВрдХ рд╣реИрдВ, рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реА рдирд╣реАрдВ рд╣реИ, рддреЛ рджреБрднрд╛рд╖рд┐рдпрд╛ "рдЖрдо рднрдВрдбрд╛рд░рдг" рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдЧрд╛ред рдкрдХрдбрд╝ рдХреНрдпрд╛ рд╣реИ ?? рдЖрдЗрдП рджреЗрдЦреЗрдВ рдЙрджрд╛рд╣рд░рдг 2:
 function B() {} B.prototype.x = 10; b = new B(); console.log(bx); //10 console.log(by); //undefined B.prototype = {constructor:B, x:10, y:20}; console.log(bx); //10 console.log(by); //undefined 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдпрд╛, "рдХреЙрдорди рд╕реНрдЯреЛрд░реЗрдЬ" (рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк (рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)) рдкреНрд░реЙрдкрд░реНрдЯреА (x) рд╕реЗрдЯ рдХрд┐рдпрд╛, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛, рдЗрд╕рдореЗрдВ рдкреНрд░реЙрдкрд░реНрдЯреА (x) рд╣реИ - рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рдлрд┐рд░ рд╣рдордиреЗ рдЖрдо рддреМрд░ рдкрд░ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореВрд▓ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛, рдЧреБрдг (x) рдФрд░ (y) рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╕рд╣реА рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ред рд╕рдм рдХреБрдЫ рдЗрди рджреЛрдиреЛрдВ рдЧреБрдгреЛрдВ рдХреЗ "рд╕рд╛рдЭрд╛ рднрдВрдбрд╛рд░" рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдирд╣реАрдВ, (y) рджреБрднрд╛рд╖рд┐рдпрд╛ рдЗрд╕реЗ рдирд╣реАрдВ рдвреВрдВрдврддрд╛ рд╣реИред WTF?!?

рдпрд╣рд╛рдВ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдЬрд╛рджреВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рд╣рдо рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЗрд╕ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╡рдВрд╢рдЬ рд╕реЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ? рд╡рдВрд╢рдЬ рдХреНрдпреЛрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ y? рдЦреИрд░, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди (рдмреА) рдХреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ (рдореВрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рджреВрд╕рд░реЗ, рд╡рд╕реНрддреБ рдЪрд░ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ, рдЬреИрд╕реЗ: рджреБрднрд╛рд╖рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ var = a {{}, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ var a = new Object () рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЕрдм рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдИ рд╡рд╕реНрддреБ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд▓рд┐рдВрдХ рдЧрд╛рдпрдм рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдирд╣реАрдВ рдЦреЛрдирд╛ рд╣реИ, рд╣рдо рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╡рд╣рд╛рдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред
рдФрд░ рдкрд╣рд▓реЗ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ __proto__ рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬрд╣рд╛рдВ рдХреЛрдИ рд╕рдВрдкрддреНрддрд┐ (y) рдирд╣реАрдВ рд╣реИред рдЕрд░реНрдерд╛рддреН, рдЙрджрд╛рд╣рд░рдг 1 рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣рд╛рдВ рд╣рдордиреЗ "рд╕рдВрдкрддреНрддрд┐ рдХреЛ рднрдВрдбрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛" рдФрд░ "рдкреБрди: рднрдВрдбрд╛рд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛" рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╣рдордиреЗ рдмрд╕ рдПрдХ рдирдпрд╛ рдмрдирд╛рдпрд╛, рдкреБрд░рд╛рдиреЗ рд╕реЗ рд╕рдВрдмрдВрдз рддреЛрдбрд╝ рджрд┐рдпрд╛, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдЕрдкрдиреЗ рдкреБрд░рд╛рдиреЗ рдореЗрдВ рдкреБрд░рд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рд▓рд┐рдВрдХ __proto__ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдХрд╛рд▓реЗ рд░рдВрдЧ рдореЗрдВ - рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ B.prototyp = {constructor: B, x: 10, y: 20} рдХреЗ рдмрд╛рдж рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ;
рд▓рд╛рд▓ - рдХреНрдпрд╛ рдЧрдпрд╛
рд╣рд░рд╛ - рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ

рддреБрдо рднреА Instof рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдЪрд┐рддреНрд░ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмреА 1 рдирд┐рд░реНрдорд╛рдг рдлрд╝рдВрдХреНрд╢рди рдмреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдЧрд╛, рдФрд░ рдмреА рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕реНрдерд┐рддрд┐ рдХреА рддрд▓рд╛рд╢ рд╣реИ - рдХрд┐ рд▓рд┐рдВрдХ __proto __ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд╕реНрддреБ (рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдкрд░) (рд╕рдВрдЦреНрдпрд╛ 1 рдХреЗ рд╕рд╛рде рд╕рд░реНрдХрд▓) рд╡рд╛рдВрдЫрд┐рдд рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд╡рд╕реНрддреБ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ (рд╕рдВрдЦреНрдпрд╛ 2 рдХреЗ рд╕рд╛рде рд╕рд░реНрдХрд▓) (рдЖрдВрдХрдбрд╝реЗ рдореЗрдВ рдХрд╛рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ) рд░рдВрдЧ рдФрд░ рд╣рд░рд╛)ред рдХрд╛рд▓реЗ рд░рдВрдЧ рдореЗрдВ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ рдпрд╣ рд╕рдВрддреБрд╖реНрдЯ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рдмреА) рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рддрд╛-рдкрд┐рддрд╛ (рдмреА) рдХреА рдирдИ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕рдВрдкрддреНрддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдИ рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреА рд╣реИ, рдФрд░ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг (b1) рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИред

рдХреЗ рдмрд╛рдж

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛ - рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдореИрдВ рдпрд╣ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдЬрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрд▓рд╛ рд░рд╣рд╛ рд╣реИ (рдирдП рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред
рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ:
 function A(str){ this.val = str; } a = new A('test'); //  val   ,        this       A('test'); //  this тАФ   .       val console.log(val) //'test' 


рдпрд╣ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛? рдирдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ? рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 function A(str){ if( this instanceof A) // this   A(    new) this.val = str; //   val else retur str; //(     new)   } 

рд▓рдЧрднрдЧ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1 + '1', рджреБрднрд╛рд╖рд┐рдпрд╛ + рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдШрдирди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдВрдмрд░ 1 рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ (1) (рдирдП рдХреЗ рдмрд┐рдирд╛) рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдКрдкрд░ рдХреЗ рд╕рдорд╛рди рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдХреЙрд▓ рдирдП рдХреЗ рдмрд┐рдирд╛ рд╣реБрдИ, рддреЛ рдмрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХреЙрд▓ toString () рд╡рд┐рдзрд┐) рдкрд░ рд▓реМрдЯреЗрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рдП рдмрд┐рдирд╛, рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рд╣реЛрддрд╛ рд╣реИред
рдореИрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдЕрд░реНрдерд╛рддреН рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдирд╣реАрдВ), рдореБрдЭреЗ рдЗрд╕реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
 function A(){} A.val = 'str'; 

рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рд╡рдВрд╢рдЬ рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдЭреВрда рдирд╣реАрдВ рдмреЛрд▓рддрд╛ рд╣реИ, рдФрд░ рд╡рдВрд╢рдЬ рдХреА рдкрд╣реБрдВрдЪ рдХреЗрд╡рд▓ рд╡рд╣реАрдВ рддрдХ рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ "рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред" рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдСрдмреНрдЬреЗрдХреНрдЯ - рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХрд╛рдо рдореЗрдВ рдЖрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИ)ред рдлрд┐рд░, рд╡реИрд░рд┐рдПрдмрд▓ рд╡реИрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 function A(){} A.val = 'str'; a = new A(); a.constructor.val; //'str' 


рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ:
https://developer.mozilla.org
http://dmitrysoshnikov.com/
http://javascript.ru

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


All Articles