рд╣рдо рдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк, __proto__, рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдФрд░ рдЙрдирдХреЗ рдЪреЗрди рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВ

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рд╣реИ:

  1. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  2. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  3. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  4. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  5. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  6. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  7. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  8. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  9. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  10. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  11. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



  12. var A = function ( ) { } ; A. prototype . b = 100 ; var a = new A ( ) ; A. prototype . c = 101 ; a. c = - 100 ; A. prototype = { } ; A. prototype . b = 536 ; /* 1 */ console. log ( a.__proto__. constructor . prototype . b === 536 ) ; var b = new A ( ) ; /* 2 */ console. log ( a.__proto__.__proto__. constructor === a.__proto__. constructor . prototype . constructor ) ; /* 3 */ console. log ( b instanceof A ) ; /* 4 */ console. log ( ! ( a instanceof Object ) ) ;



рдкреНрд░рд╢реНрдиред 1-4 рд░рд┐рдЯрд░реНрди рдХреНрдпрд╛ рдФрд░ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛?



рдЬрд╡рд╛рдм рджреЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓?

рдлрд┐рд░ рдЖрдкрдХреЛ рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ;-) ( рдмрдбрд╝реА рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рдЕрдЧрд▓реЗ 600 Kb)





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



рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд╕рд░реНрдХрд┐рдЯ?

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



рд╕рднреА рдЪрд┐рддреНрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВред



рдЖрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ (png + bmml): http://narod.ru/disk/400270001/javascript_prototype.zip.html



рд╕реНрд▓рд╛рдЗрдб 1









рд╕реНрд▓рд╛рдЗрдб реи









рд╕реНрд▓рд╛рдЗрдб 3









рд╕реНрд▓рд╛рдЗрдб 4









рд╕реНрд▓рд╛рдЗрдб 5









рд╕реНрд░реЛрдд (png + bmml): http://narod.ru/disk/400270001/javascript_prototyp.zip.html

рд╕реНрд░реЛрдд рдХреЛрдб: pastebin.com/wBchEpxq



рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд▓реЗрдЦ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛, рдФрд░ рдЪрд┐рддреНрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ :)



PS __proto__ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ 1.8.1 рдХреЗ рдмрд╛рдж рд╕реЗ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрдЬрд╛рдп Object.getPrototypeOf (рдСрдмреНрдЬреЗрдХреНрдЯ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдХреНрд░реИрд╢ рдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдХреНрд░реЛрдХрдлреЛрд░реНрдб рдиреЗ рдЧреЗрдЯрдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдкрдСрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рд╣реИ рдпрджрд┐, "рдпрджрд┐ рдЖрдк рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА"



All Articles