Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.09.2010, 00:04
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Вопрос по прототипу
Здравствуйте! Подскажите в чем разница.
Код 1
function cyl(l, d){
		this.lenght2 = l;
		this.diametr = d;
		this.area = function(){return this.lenght2 * this.diametr}
	}
	 	var a = new cyl(10, 3);
		var b = new cyl(12, 4);
		
		document.write(a.area() + " " + b.area());


Код 2
function cyl(l, d){
		this.lenght2 = l;
		this.diametr = d;
		
	}
		cyl.prototype.area = function(){return this.lenght2 * this.diametr}
		
	 	var a = new cyl(10, 3);
		var b = new cyl(12, 4);
		
		document.write(a.area() + " " + b.area());


Не совсем понимаю в чем разница(

Читаю раздел прототипы и наследование,Фленагана. Только не могу сообразить что автор имеет ввиду в этом абзаце по этой теме

Но свойство area каждого отдельно взятого объекта Rectangle(у меня cyl) всегда будет ссылаться на одну и ту же функцию (разумеется, это свойство можно изменить в процессе работы, но, как правило, предполагается, что методы объекта не должны меняться). Применение отдельных свойств для хранения методов объектов, которые могли бы совместно использоваться всеми экземплярами одного и того же класса, – это достаточно неэффективное решение.
Однако и эту проблему можно решить. Оказывается, все объекты в JavaScript содержат внутреннюю ссылку на объект, известный как прототип.

Последний раз редактировалось TicTac, 08.09.2010 в 00:17.
Ответить с цитированием
  #2 (permalink)  
Старый 08.09.2010, 00:19
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

В первом коде у каждого экземпляра есть своя функция area. И если бы их было 100, то и функций area было бы тоже сто. И поскольку функция делает одно и тоже, просто с разными значениями, ее выносят в прототип. И она теперь одна хоть для 100000 экземпляров
Ответить с цитированием
  #3 (permalink)  
Старый 08.09.2010, 08:31
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Sweet, тогда это влияет еще на размер объекта?
Ответить с цитированием
  #4 (permalink)  
Старый 08.09.2010, 08:37
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Это влияет на количество создаваемых функций. Размер объекта -- это что-то эфемерное.
Ответить с цитированием
  #5 (permalink)  
Старый 08.09.2010, 12:24
Кандидат Javascript-наук
Отправить личное сообщение для TicTac Посмотреть профиль Найти все сообщения от TicTac
 
Регистрация: 07.09.2010
Сообщений: 133

Благодарю!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по учебнику Invis1ble Сайт Javascript.ru 12 21.03.2011 20:06
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 14:50
мааленький вопрос по Regexp:) mirniy Общие вопросы Javascript 1 22.01.2009 20:47
вопрос по long poll megaswin AJAX и COMET 2 27.05.2008 09:20