Что такое прототипы
Обьясните пожалуйста на понятном языке, что такое прототипы и для чего они нужны: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, время: 07:15. |