рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ, рд╡рд╕реНрддреБрдПрдВ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣реИрдмрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ, рдореИрдВ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд░реНрдЧ рд╡рд┐рд░рд╛рд╕рдд рдкрд░ рдПрдХ рдЫреЛрдЯреА рд░рд┐рдкреЛрд░реНрдЯ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред



рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╕рдордп рдореЗрдВ рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдХрд░ рдЦреБрд╢реА рд╣реБрдИ рдХрд┐ рдореИрдВ рдЕрдкрдиреА рдЦреБрдж рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдЬреЛ рдореБрдЭреЗ рдЕрдиреНрдп рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛, рдЙрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред (=



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



рдЗрд╕ рддрдереНрдп рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддреЗ рд╣реБрдП рдХрд┐ рд╕рдВрдЧреЛрд╖реНрдареА рдХреЛ тАЬрдЕрдЧрд▓реЗ рд╢реБрдХреНрд░рд╡рд╛рд░ рддрдХтАЭ рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореИрдВрдиреЗ рд╕реЗрдорд┐рдирд╛рд░ рдХреЗ рдкрд╛рда рдХреЛ рдиреЗрдЯ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдореЗрд░рд╛ рдЙрддреНрд╕рд╛рд╣ рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛред



рдкреВрд░реЗ рдкрд╛рда рдХреЛ 5 рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  1. рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдУрдУрдкреА (1/5): рдСрдмреНрдЬреЗрдХреНрдЯ
  2. рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ OOP (2/5): рдХрдХреНрд╖рд╛рдПрдВ
  3. рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдУрдУрдкреА (3/5): рдХрдХреНрд╖рд╛ рдХреЗ рдЧреБрдг рдФрд░ рддрд░реАрдХреЗ
  4. рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ OOP (4/5): рдХреНрд▓рд╛рд╕ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕
  5. рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ OOP (5/5): рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХреНрд╕




рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдУрдУрдкреА (1/5): рдСрдмреНрдЬреЗрдХреНрдЯ



рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдПрдХ рд╕рд░рдгреА рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдПрдХ рдХрд╛рд░реНрдп рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рдПрдХ рд╡рд╕реНрддреБ рднреА рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рддреЛ рдПрдХ рд╡рд╕реНрддреБ рдХреНрдпрд╛ рд╣реИ? рдПрдХ рд╡рд╕реНрддреБ рдЧреБрдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдкрддреНрддрд┐ рдПрдХ рдирд╛рдо-рдореВрд▓реНрдп рдЬреЛрдбрд╝реА рд╣реИред рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдФрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдПрдХ рд╕рдВрдЦреНрдпрд╛, рдПрдХ рдмреВрд▓рд┐рдпрди рдореВрд▓реНрдп, рдпрд╛ рдПрдХ рд╡рд╕реНрддреБ (рдПрдХ рд╕рд░рдгреА рдФрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╕рд╣рд┐рдд) рд╣реИред



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



var s = 'hello world'; alert(typeof s); //  string
      
      





рд╣рдо, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдРрд╕рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛:



 alert (s == window.s); //  true alert (typeof window); //  object
      
      





рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ window.s рдкреНрд░реЙрдкрд░реНрдЯреА рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧреБрдгреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИ:



 alert(s.length); //  11 (   )
      
      





рдЗрд╕ рд╕рдм рдХреЗ рд╕рд╛рде, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╢рд╛рдмреНрджрд┐рдХ рд╣реИ!



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



 var s = 'futurico'; //    s  window (window.s) var f = function(){ //    f  window (window.f) alert(this == window); //  true alert(this.s); //  'futurico' } f(); //   f  window (window.f()) var o = {}; //    o  window (window.o) os = 'karaboz'; //    s  window.o (window.os) of = function(){ //    f  window.o (window.of) alert(this == o); //  true alert(this.s); //  'karaboz' } of(); //   f  window.o (window.of())
      
      





рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ new



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



рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:



 var str='karaboz';
      
      





рд╣рдо рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрдорд╛рдг рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ:



 var str = new String('karaboz');
      
      





рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ String



рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ (рдЙрджрд╛рд╣рд░рдг) рдмрдирд╛рдПрдВред



рдЕрдиреНрдп рд╕рднреА рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдХрдерди рд╕рд╣реА рд╣реИ:



 //  var num = 12345.6789; // var num = new Number(12345.6789); //   var bul = true; // var c = new Boolean(true); //  var fun = function(x){var p = x}; // var fun = new Function('x', 'var p = x'); //  var arr = ['a', 'b', 'c']; // var arr = new Array('a', 'b', 'c'); //  var obj = {}; // var obj = new Object();
      
      





рдирд┐рд░реНрдорд╛рдг рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЗрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдпреЛрдВ (рд╡рд░реНрдЧреЛрдВ) рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ:



 alert(num.toFixed(1)); //  12345.6 alert(arr.length); //  3
      
      





рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреБрднрд╛рд╖рд┐рдпрд╛ рдереЛрдбрд╝рд╛ рдкреЗрдЪреАрджрд╛ рдорд╛рдорд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рддреЛ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдирд┐рдореНрди рдХреЛрдб рджреЛ рдЪрд░ ( String



рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ) рдХреА рд╕рдорд╛рдирддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:



 var str1 = 'karaboz'; var str2 = new String('karaboz'); alert(str1 == str2); //  true
      
      





рдЬрдм str1 рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдХрд╕реНрдЯрдо рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:



 str1.tell = function(){ alert(this); } str1.tell(); //   'str1.tell is not a function'
      
      





рдЙрд╕реА рд╕рдордп, str2 рдХреЗ рд▓рд┐рдП, рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ:



 str2.tell = function(){ alert(this); } str2.tell(); //  'karaboz'
      
      





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



 var s = 'futurico'; //    s  window (window.s) var f = function(){ //    f  window (window.f) alert(this == window); //  true alert(this.s); //  'futurico' } f(); //   f  window (window.f()) fs = 'karaboz'; //    s  window.f (window.fs) fm = function(){ //    m  window.f (window.fm) alert(this == f); //  true alert(this.s); //  'karaboz' } fm(); //   m  window.f (window.fm())
      
      





рдпрд╣рд╛рдВ рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдлрд╝рдВрдХреНрд╢рди f, рд╕реНрд╡рдпрдВ рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдкрдиреЗ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ!



рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ OOP (2/5): рдХрдХреНрд╖рд╛рдПрдВ



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



 // - -    var Class = function(p){ alert('My name is constructor'); this.p = p; }
      
      





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



 var o = new Class('karaboz'); alert(o); //  [Object object] alert(op); //  'karaboz' -     o
      
      





рдпрджрд┐ рдЖрдк рд╡реЗрд░рд┐рдПрдмрд▓ рдУ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдмрд╕ рдХреНрд▓рд╛рд╕ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ - рдирдП рдХреАрд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛, рдлрд┐рд░ рдХреЛрдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:



 var o = Class('karaboz'); //   window.Class() alert(o); //  undefined,   ,    Class() alert(window.p); //  'karaboz' -      window
      
      





рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╕рдордп, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ .prototype



рд╕рдВрдкрддреНрддрд┐ рдмрдирд╛рддрд╛ рд╣реИред .prototype



рдлрд╝рдВрдХреНрд╢рди рдХреЗ .prototype



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



 Class.prototype.method = function(){ alert('my name is .method'); }
      
      





рдЕрдм рд╣рдо рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рд╡рд╕реНрддреБ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ:



 o.method(); // !
      
      





рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реА рдЦреЛрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ .prototype



рдлрд╝рдВрдХреНрд╢рди рдХреЗ .prototype



рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИред



рдЗрд╕рд▓рд┐рдП, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп, .constructor



рдЧреБрдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдЬреЛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрдорд╛рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ:



 alert(o.constructor == Class); //  true
      
      





рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░, рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ .constructor



рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рди рдкрд╛рдХрд░, рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ .prototype рд╕реЗ рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдерд╛ред рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:



 alert(Class.prototype.constructor == Class); //  true
      
      





рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ .prototype



рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ:



 alert(o.prototype); //  undefined alert(o.constructor.prototype); //  [Object object]
      
      





.prototype



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



 var s = 'karaboz'; s.constructor.prototype.tell = function(){ alert(this); } s.tell(); //     ,   'karaboz'
      
      





рдЖрдк рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ-рд╕реАрдзреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдкреНрд░реЙрдкрд░реНрдЯреА рдпрд╛ рд╡рд┐рдзрд┐ рднреА рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 String.prototype.tell = function(){ alert(this); }
      
      





рд╡реИрд╕реЗ, рд╣рдордиреЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЗрд╕ рдХрдерди рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИ рдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ (=) рд╣реИ



рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдУрдУрдкреА (3/5): рдХрдХреНрд╖рд╛ рдХреЗ рдЧреБрдг рдФрд░ рддрд░реАрдХреЗ



рдПрдХ рд╡рд░реНрдЧ (рд╡рд░реНрдЧ рдХреЗ рд╕рджрд╕реНрдп) рдХреЗ рдЧреБрдг рдФрд░ рддрд░реАрдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ), рдирд┐рдЬреА (рдирд┐рдЬреА), рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд (рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд) рдФрд░ рд╕реНрдереИрддрд┐рдХ (рд╕реНрдереИрддрд┐рдХ) рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред



рдЬрдирддрд╛ рдХреЗ рд╕рджрд╕реНрдп



рдУрдкрди рдРрд╕реЗ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдерд┐рдд рдХрд┐рд╕реА рднреА рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдкрдврд╝рд╛, рд╕рдВрд╢реЛрдзрд┐рдд, рд╣рдЯрд╛рдпрд╛ рдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЧреБрдг рдирд┐рд░реНрдорд╛рдг рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ .this



рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:



 var Class = function(p){ this.p = p; } var o = new Class('karaboz'); alert(op); //  'karaboz' op = 'mertas'; alert(op); //  'mertas'
      
      





рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ .prototype



рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ .prototype



рд╣реИ:



 Class.prototype.method = function(){ alert('my name is .method'); } obj.method(); //  'my name is .method' obj.method = function(){ alert('my name is .method, but I am new one!'); } obj.method(); //  'my name is .method, but I am new one!'
      
      





.method



рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ .method



рдореЗрдердб рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ .method



, рд╣рдо .prototype



рдлрд╝рдВрдХреНрд╢рди рдХреЗ .prototype



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



рд╕реЗ рдорд╛рдирдХ рд╡рд┐рдзрд┐ .prototype



ред



рд╣рдо .prototype



рд╕реЗ .prototype



рд╕реЗ рджреЗрдЦрдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА .method



рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ:



 delete o.method; o.method(); //   'my name is .method'
      
      





рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХреЗ .prototype



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



рдирд┐рдЬреА рд╕рджрд╕реНрдп



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



 var Class = function(p){ var secret = p; var count = 3; var counter = function(){ count тАУ; if(count > 0){ return true; } else { return false; } } }
      
      





рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╣реЛрдиреЗ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ secret



, count



рдФрд░ counter



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



рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐рдпрд╛рдБ



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



рдЗрд╕ рдХреАрд╡рд░реНрдб рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдзрд┐ рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



 var Class = function(p){ var secret = p; var count = 3; var counter = function(){ if(count > 0){ count тАУ; return true; } else { return false; } } this.tellSecret = function(){ if(counter()){ return secret; } else { return null; } } } var o = new Class('12345'); alert(o.tellSecret()); //  '12345' alert(o.tellSecret()); //  '12345' alert(o.tellSecret()); //  '12345' alert(o.tellSecret()); //  null //      counter, // a   ,       o.counter = function(){ return true; } alert(o.tellSecret()); //    null
      
      





.tellSecret



рдкрд╕рдВрджреАрджрд╛ рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд╣рд▓реЗ рддреАрди рдХреЙрд▓ рдХреЗ рд▓рд┐рдП secret



, рдФрд░ рдмрд╛рдж рдореЗрдВ рд╕рднреА рдХреЗ рд▓рд┐рдП null



ред рд╣рд░ рдмрд╛рд░ .tellSecret



рдирд┐рдЬреА рдкрджреНрдзрддрд┐ counter



рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рдпрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рдЬреА рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд░рдЦрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреА .tellSecret



рдкрджреНрдзрддрд┐ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдирд┐рдЬреА рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред



.prototype



рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдзрд┐ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдмрдирд╛рдИ рдЧрдИ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдореЗрдореЛрд░реА рдЦрдкрдд рдХреЛ .prototype



ред рдирд┐рдЬреА рдФрд░ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдЙрд╕ рд╕рдордп рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рдореЗрдВ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ред



рд╕реНрдереИрддрд┐рдХ рд╕рджрд╕реНрдп



рд╕реНрдереИрддрд┐рдХ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдХрд╛рд░реНрдп рд╕реЗ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВ (рд╕реНрд╡рдпрдВ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП)ред рдЗрд╕рд▓рд┐рдП, рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрдЧ рдЧреБрдг рдФрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рд╡рд╕реНрддреБ рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ:



 var Class = function(p){ this.p = p; } Class.prototype.tell = function(word){ alert(this.p + ' ' + word + ' ' + this.constructor.p); // alert(this.p + ' ' + word + ' ' + Class.p); } Class.p = 'futurico'; var o = new Class('karaboz'); o.tell('love'); //  'karaboz loves futurico';
      
      







рдмрдВрдж (рдмрдВрдж)



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



рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ function



, рддреЛ рд╣рдо рд╣рдореЗрд╢рд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдХреНрд▓реЛрдЬрд░ рдмрдирд╛рддреЗ рд╣реИрдВред рдПрдХ рдХреНрд▓реЛрдЬрд░ рд╕рднреА рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ рдореМрдЬреВрдж рдереЗ рдЬрд┐рд╕рдиреЗ рдЗрд╕ рдХреНрд▓реЛрдЬрд░ рдХреЛ рдмрдирд╛рдпрд╛ рдерд╛, рддрдм рднреА рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдерд╛ред



 var createFunc = function(param){ var closureParam = param; //  var returnedFunc = function(){alert(closureParam);} return returnedFunc; } var f = createFunc('karaboz');
      
      





рдЕрдм, рдпрджрд┐ рд╣рдо рдЪрд░ f



рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдп рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╢рд░реАрд░ рдореЗрдВ closureParam



рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд╣рд┐рдд рд╣реИ, рдЬреЛ рдХрд┐ f



рдЖрд╕рдкрд╛рд╕ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╣реАрдВ рднреА рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИ рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:



 alert(f); // : function(){alert(closureParam);}
      
      





рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреА, function(){alert(closureParam);}



рдХреНрд▓реЛрдЬрд░ рдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж closureParam



рдХреЛ рдЙрд╕ рд╕рдВрджрд░реНрдн рд╕реЗ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ closureParam



рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдерд╛:



 f(); //  'karaboz'
      
      





рдпрджрд┐ рд╣рдо рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╡рд┐рдзрд┐ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ .tellSecret



рд╕рдВрджрд░реНрдн рдореЗрдВ рдШреЛрд╖рд┐рдд рдирд┐рдЬреА рдлрд╝рдВрдХреНрд╢рди count()



рдФрд░ рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐ secret



рджреЛрдиреЛрдВ рдХреЛ рдпрд╛рдж .tellSecret



ред рдЙрд╕реА рд╕рдордп, рдЬрдм count()



рдХреЛ .tellSecret



рдЕрдВрджрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп, рдмрджрд▓реЗ рдореЗрдВ, рдЗрд╕рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ count()



.tellSecret



рдпрд╛рдж рдХрд░рддрд╛ рд╣реИред



рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ OOP (4/5): рдХреНрд▓рд╛рд╕ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕



рд╡рд░реНрдЧ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд:



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


рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреНрд▓рд╛рд╕рд┐рдХ рдХреНрд▓рд╛рд╕ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА .prototype



рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рд╣реИ: рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрдВрдЯрд░рдкреНрд░рд┐рдЯрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдХреА рд╡рд┐рдзрд┐ рдирд╣реАрдВ .prototype



рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ .prototype



рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рдВрдкрддреНрддрд┐ (рдСрдмреНрдЬреЗрдХреНрдЯ) рдореЗрдВ рдЦреЛрдЬ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред



рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдЗрдП рджреЛ рд╡рд░реНрдЧреЛрдВ рдХреА рдПрдХ рд╡рд┐рд░рд╛рд╕рдд рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:



 var Class = function(){ // -  this.className = 'Class'; } Class.prototype.method = function(){ //     alert('method of ' + this.className); } var ClassSub = function(){ // -  this.className = 'ClassSub'; } ClassSub.prototype = new Class(); //     .prototype  var objSub = new ClassSub(); //    ClassSub objSub.method(); // !  'method of ClassSub'
      
      





рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрд╡рд░реНрдЧ .method



рдЕрдкрдиреЗ .method



рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ (рдЗрд╕реЗ рдЕрдкрдиреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдХреИрд╕рд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рджреБрднрд╛рд╖рд┐рдпрд╛ objSub



рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ .method



рд╡рд┐рдзрд┐ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ objSub



рдФрд░ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рджреБрднрд╛рд╖рд┐рдпрд╛ ClassSub.prototype



рдХреЙрд▓ ClassSub.prototype



рдФрд░ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдмреАрдЪ .method



рдХреА рддрд▓рд╛рд╢ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░ рд╕реЗ - рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛: рд╣рдо рдХрд╣реАрдВ рднреА ClassSub.prototype.method = function(){}



рд╕рдорд╛рди рдХреБрдЫ рднреА рд╕реЗрдЯ рдирд╣реАрдВ ClassSub.prototype.method = function(){}



ред рд▓реЗрдХрд┐рди ClassSub.prototype



рдСрдмреНрдЬреЗрдХреНрдЯ ClassSub.prototype



Class()



рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, ClassSub.prototype



рд╣реА рдЖрд╡рд╢реНрдпрдХ рдЧреБрдг рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВ, рджреБрднрд╛рд╖рд┐рдпрд╛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ .prototype



рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдпрд╣рд╛рдВ рд╡рд╣ рдЕрдиреБрд░реЛрдзрд┐рдд рд╡рд┐рдзрд┐ рдкрд╛рддрд╛ рд╣реИ: Class.prototype.method = function(){}



ред



рд╣рдо рдПрдХ рд╕рд░рд▓ рддреБрд▓рдирд╛ рдХреЗ рд╕рд╛рде рдЗрд╕ рд▓рдВрдмреЗ рддрд░реНрдХ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреЗ рд╣реИрдВ:



 // .method  objSub   .method  ClassSub.prototype alert(objSub.method == ClassSub.prototype.method); // true //  .method  ClassSub.prototype   .method  Class.prototype alert(ClassSub.prototype.method == Class.prototype.method); // true
      
      





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



рдХреНрд▓рд╛рд╕ рд╕реЗ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ (рд╕реНрдкрд╖реНрдЯ рдпрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд) рдХреЛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдпрджрд┐ Object.prototype



рдпрд╣ рдЕрднреА рднреА рдЕрдиреБрд░реЛрдзрд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рдирд╣реАрдВ Object.prototype



рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рд▓реМрдЯрд╛рдПрдЧрд╛ред Object



рдХреНрд▓рд╛рд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред



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



 ClassSub.prototype.method = function(){ //     alert('method of ' + this.className + ' but new one'); } ClassSub.prototype.methodSub = function(){ //     alert('methodSub of ' + this.className); }; //       objSub.method(); //  'method of ClassSub but new one' //       objSub.methodSub(); //  'methodSub of ClassSub' var obj = new Class(); //    Class //       obj.method(); //  'method of Class' //       obj.methodSub(); //   'obj.methodSub is not a function'
      
      





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



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



рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдирд╛рдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдЬрдиреНрдо рдХреЗ рд╕рдордп рдЪрд┐рд▓реНрд▓рд╛рдПрдЧрд╛ (=



 var Animal = function(name){ this.name = name; this.cry(); //      } Animal.prototype.cry = function(){ alert('whoa!'); } var animal_thing = new Animal('karaboz'); //  'whoa!';
      
      







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



 var Cat = function(name){ this.name = name; this.cry(); } Cat.prototype = new Animal(); //    Animal Cat.prototype.cry = function(){ //   .cry alert('meow!'); } var cat_thing = new Cat('mertas');
      
      





рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдкрд░, рд╣рдо рджреЛ рдЪреАрдЦреЗрдВ рдирд╣реАрдВ рд╕реБрдирддреЗ рд╣реИрдВ (рд╡рд╛рд╣ !, рдореНрдпрд╛рдК!), рд▓реЗрдХрд┐рди рддреАрди! (рд╡рд╛рд╣ !, рд╡рд╛рд╣ !, рдореНрдпрд╛рдК!) рдФрд░ рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБред рджреВрд╕рд░реА рдЪреАрдЦ рдЙрд╕реА рдХреНрд╖рдг рд╣реЛрддреА рд╣реИ рдЬрдм рд╣рдо рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо Cat.prototype = new Animal () рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдкрд╢реБ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВ (рдФрд░ рдЗрд╕реЗ рдЬрдиреНрдо рдХреЗ рд╕рдордп рдЪрд┐рд▓реНрд▓рд╛рддреЗ рд╣реИрдВ)ред рдпрд╛рдиреА рд╣рдо рдЙрдкрд╡рд░реНрдЧ рдХреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдЖрдЗрдбрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдЪрд▓рд╛рддреЗ рд╣реИрдВ!



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



рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓ рдХреЙрд▓ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди



рд╢рд╛рдпрдж Animal



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



 Cat.prototype = Animal.prototype;
      
      





рдХреЛрдб рдЪрд▓рд╛рдирд╛, рд╣рдо рджреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЪреАрдЦреЗрдВ рд╕реБрдирддреЗ рд╣реИрдВ! рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред рдЖрдЗрдП Animal



рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Cat



рдЙрдкрд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ



 var animal_thing_new = new Animal('juks'); //  'meow!',      Cat!
      
      





рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреИрдЯ-рдХреНрд▓рд╛рд╕ рдХреА рдЖрд╡рд╛рдЬрд╝ рдореЗрдВ рдЪрд┐рд▓реНрд▓рд╛рддрд╛ рд╣реИ! рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдордиреЗ рд╕рдорд╛рди рдирд╛рдо рдХреА рдореВрд▓-рд╢реНрд░реЗрдгреА рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рд╣реИред рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдо Cat.prototype = Animal.prototype



, рддреЛ рд╣рдо рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ Cat.prototype рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Animal.prototype рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрд╢рд╛ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд┐рд╕реА рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдмрджрд▓рд╛рд╡ рд╕реЗ рдЕрдиреНрдпрд╛рдпрдкреВрд░реНрдг рд░реВрдк рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛрддрд╛ рд╣реИредрдЬрдм рд╣рдордиреЗ рд▓рд┐рдЦрд╛ Cat.prototype = new Animal()



, рд╣рдордиреЗ рдПрдХ Cat.prototype



рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдИ ред рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рд╣рдордиреЗ .prototype



рдСрдмреНрдЬреЗрдХреНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ред



рдЖрдЗрдП, рдореВрд▓ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдП рдмрд┐рдирд╛ - рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ - рдереЛрдбрд╝рд╛ рдЕрд▓рдЧред рдЖрдЗрдП рдмрд╕ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ .prototype



рд╕реЗ рдПрдХ .prototype



рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рд╕рднреА рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ ред рд╣рдо рд╕рдорд╕реНрдпрд╛ рд░реЗрдЦрд╛ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



 for (var prop in Animal.prototype){ Cat.prototype[prop] = Animal.prototype[prop]; }
      
      





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



рдЖрдЗрдП рдирд┐рдореНрди рдЯреНрд░рд┐рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдВ: .prototype



рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ .prototype



рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛ , рд▓реЗрдХрд┐рди рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЬрдЯрд┐рд▓ рд░реЗрдЦрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



 var Empty = function(){}; //   - Empty.prototype = Animal.prototype; Cat.prototype = new Empty();
      
      





рд╣рдордиреЗ Cat.prototype



рдПрдХ рдХреГрддреНрд░рд┐рдо рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдИ Empty



ред рдЬрдм рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди Empty()



рдЦрд╛рд▓реА рд╣реИред рдХрд┐рд╕реА рднреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдореЗрдВ Cat.prototype



рдХреЗрд╡рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЪрд┐рдВрддрд╛ рд╣реЛрдЧреА Cat.prototype



рдФрд░ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ Animal



ред рдпрджрд┐ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐ рдХреЛ рдпрд╛ рддреЛ рдХрдХреНрд╖рд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ Cat



рдпрд╛ рдЧреБрдгреЛрдВ рдореЗрдВ рдирд╣реАрдВ рдЦреЛрдЬрддрд╛ рд╣реИ Cat.prototype



, рддреЛ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреА рдУрд░ рдореБрдбрд╝ рдЬрд╛рдПрдЧрд╛ Cat.prototype (== new Empty())



рдФрд░ рдЦреЛрдЬ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ Empty.prototype



, рдЬреЛ рд╕реАрдзреЗ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИAnimal.prototype







рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдПрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди



рд╣рдо рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ:



 var Cat = function(name){ Animal.apply(this, arguments); }
      
      





рдпрд╛рдиреАрдЙрдкрд╡рд░реНрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдирдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ Cat



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



new Cat()







.constructor



.prototype.constructor



Cat.prototype = new Empty()



Cat.prototype



(new Cat()).constructor



Cat.prototype.constructor



(new Empty().constructor)



Empty.prototype.constructor ( == Animal.prototype.constructor)



рдпрд╛рдиреАрд╣рдорд╛рд░реА рд╕рдВрдкрддреНрддрд┐ .constructor



рдЕрдм рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛рд░реНрдп рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИ, рдЙрдк-рд╡рд░реНрдЧ рдХреЛ рдирд╣реАрдВ! рд╣рдордиреЗ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред рдпрд╣ рд╕рдм рдЬрд╛рдирддреЗ рд╣реБрдП, рдЕрднреА рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:



 var Cat = function(name){ this.constructor.apply(this, arguments); }
      
      





рдФрд░ рдХреЛрдб рдХреА рд╡рд╛рдВрдЫрд┐рдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╣рдо рдФрд░ рднреА рдЕрдзрд┐рдХ рднреНрд░рдо рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ .constructor



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



 var Empty = function(){}; //   - Empty.prototype = Animal.prototype; Cat.prototype = new Empty(); Cat.prototype.constructor = Cat; //     - Cat.superClass = Animal; //    -   ,     - : var Cat = function(name){ Cat.superClass.apply(this, arguments); }
      
      





рдпрджрд┐ рд╣рдо рдЕрдм рдЙрдкрд╡рд░реНрдЧ рдореЗрдВ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



 Cat.prototype.cry = function(){ Cat.superClass.prototype.cry.apply(this, arguments); alert('one more cat was born'); }
      
      





рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдбрд╛рд▓реЗрдВрдЧреЗ рдФрд░ рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд┐рд░рд╛рд╕рдд рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВрдЧреЗред рд╣рдо рдЗрд╕реЗ .prototype



рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди-рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ Function



ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдХрд╕реНрдЯрдо рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдПред



 //    Function.prototype.inheritsFrom = function(superClass) { var Inheritance = function(){}; Inheritance.prototype = superClass.prototype; this.prototype = new Inheritance(); this.prototype.constructor = this; this.superClass = superClass; } // -  var Class = function(){} //      Class.prototype.method = function(){}; // -  var ClassSub = function(){ ClassSub.superClass.apply(this, arguments); } //   ClassSub.inheritsFrom(Class); // sic! //      ClassSub.prototype.method = function(){ ClassSub.superClass.prototype.method.apply(this, arguments); }
      
      







рдЬрд╛рд╡рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ OOP (5/5): рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХреНрд╕



  1. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдирд┐рдЬреА рд╕рджрд╕реНрдп , рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб
  2. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ , рдбрдЧрд▓рд╕ рдХреНрд░реЙрдХрдлреЛрд░реНрдб рдореЗрдВ рд╢рд╛рд╕реНрддреНрд░реАрдп рд╡рд┐рд░рд╛рд╕рдд
  3. рдЬреЗрдПрд╕ рдореЗрдВ рдУрдУрдкреА, рднрд╛рдЧ 1: рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ / рдирд┐рдЬреА рдЪрд░ рдФрд░ рддрд░реАрдХреЗ , рдЧреЗрд╡рд┐рди рдХрд┐рд╕реНрдЯрдирд░
  4. рдЬреЗрдПрд╕ рдореЗрдВ рдУрдУрдкреА, рднрд╛рдЧ 2: рд╡рд┐рд░рд╛рд╕рдд , рдЧреЗрд╡рд┐рди рдХрд┐рд╕реНрдЯрдирд░
  5. рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд , рдХреЗрд╡рд┐рди рд▓рд┐рдВрдбрд╕реЗ
  6. рд▓рд┐рдЯрд┐рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓реЗрдВ, рдпрд╛ рдПрдХ рдирдП рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ , рджрд┐рдорд┐рддреНрд░реА рдХреЛрдЯреЗрд░реЛрд╡
  7. рдмрд┐рдЧ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреНрд░рд┐рдХ , рджрд┐рдорд┐рддреНрд░реА рдХреЛрдЯреЗрд░реЛрд╡
  8. JavaScript ,



All Articles