Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.08.2010, 13:08
Аватар для Deniskan
Интересующийся
Отправить личное сообщение для Deniskan Посмотреть профиль Найти все сообщения от Deniskan
 
Регистрация: 03.03.2010
Сообщений: 16

Что такое прототипы
Обьясните пожалуйста на понятном языке, что такое прототипы и для чего они нужны
Ответить с цитированием
  #2 (permalink)  
Старый 02.08.2010, 13:10
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://javascript.ru/tutorial/object/inheritance
Ответить с цитированием
  #3 (permalink)  
Старый 02.08.2010, 23:54
Аватар для Deniskan
Интересующийся
Отправить личное сообщение для Deniskan Посмотреть профиль Найти все сообщения от Deniskan
 
Регистрация: 03.03.2010
Сообщений: 16

В этой статье я застрял на наследовании на классах - вот эту строчку вообще не понятно - Rabbit.prototype = new Animal() - обьясните пожалуйста её смысл
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2010, 01:38
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

ну так это не лучший вариант как там объяснено. Смысл в том, что на основе свойства 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 - объект, который будет использоваться как прототип для создаваемых в дальнейшем объектов
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2010, 14:56
Аватар для Deniskan
Интересующийся
Отправить личное сообщение для Deniskan Посмотреть профиль Найти все сообщения от Deniskan
 
Регистрация: 03.03.2010
Сообщений: 16

У меня вопрос то в чем - есть ли разница между этим

function Animal () {};
var animal = new Animal();

function Rabbit () {};
Rabbit.prototype = animal;

и этим

function Animal () {};

function Rabbit () {};
Rabbit.prototype = new Animal();
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2010, 14:59
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Очевидно, нет.
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2010, 16:00
Аватар для Deniskan
Интересующийся
Отправить личное сообщение для Deniskan Посмотреть профиль Найти все сообщения от Deniskan
 
Регистрация: 03.03.2010
Сообщений: 16

Если нет - эт хорошо, тогда я все понимаю
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2010, 16:06
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Более того, можно даже так, и будет то же самое
unction Animal () {};
var animal1 = new Animal();
var animal2 = animal1;
var animal3 = animal2;

function Rabbit () {};
Rabbit.prototype = animal3;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что это такое? bayah Общие вопросы Javascript 8 27.04.2010 16:19
Что такое команда hide? Hagrael Events/DOM/Window 7 17.02.2010 08:43
Что такое document.body is null xela1980 jQuery 1 26.12.2009 00:30
F1 me plzz, что такое object в данном скрипте? AraGnom Общие вопросы Javascript 3 22.09.2009 12:02
Что такое "javascript:document.login.submit()" i_live_in_Moscow Общие вопросы Javascript 21 30.09.2008 15:25