Что такое прототипы
Обьясните пожалуйста на понятном языке, что такое прототипы и для чего они нужны:help: :help:
|
|
В этой статье я застрял на наследовании на классах - вот эту строчку вообще не понятно - Rabbit.prototype = new Animal() - обьясните пожалуйста её смысл:help:
|
ну так это не лучший вариант как там объяснено. Смысл в том, что на основе свойства prototype функции будут созаваться объекты. Т.е. после
var rabbit = new Rabbit(); rabbit.[[prototype]] (в браузерах оно реализовано как rabbit.__proto__) будет ссылаться на созданный объект Animal function Animal(){} function Rabbit(){} Rabbit.prototype = new Animal(); Rabbit.prototype.prop = 2; // только не надо так в real life делать rabbit = new Rabbit(); alert(rabbit.__proto__ instanceof Animal); // работает в ff, opera alert(rabbit.__proto__ === Rabbit.prototype); // работает в ff, opera alert(rabbit.prop); т.е. __proto__ - прототип объекта, prototype - объект, который будет использоваться как прототип для создаваемых в дальнейшем объектов |
У меня вопрос то в чем - есть ли разница между этим
function Animal () {}; var animal = new Animal(); function Rabbit () {}; Rabbit.prototype = animal; и этим function Animal () {}; function Rabbit () {}; Rabbit.prototype = new Animal(); |
Очевидно, нет.
|
Если нет - эт хорошо, тогда я все понимаю:)
|
Более того, можно даже так, и будет то же самое
unction Animal () {}; var animal1 = new Animal(); var animal2 = animal1; var animal3 = animal2; function Rabbit () {}; Rabbit.prototype = animal3; |
Часовой пояс GMT +3, время: 18:08. |