Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.11.2014, 18:19
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

krutoy,
Он написал код описаный в стандартах и спецификациях языка. Конечно дескрипторы мало имеют аналогов в других языках программирования и в связи с этим многие их не любят. Но люди которые позиционируют себя как JavaScript программисты должны знать о них и для них эта конструкция будет вполне понятна, лаконична и обычна.

Последний раз редактировалось tsigel, 28.11.2014 в 18:22.
Ответить с цитированием
  #12 (permalink)  
Старый 28.11.2014, 18:20
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от javacrypt
То есть выходит, что все экземпляры "класса" Apple будут иметь свой личный метод getName
Не, не совсем. Свой личный они имели бы, если бы ты написал
Apple=function(name){
   this.name=name
   this.getName=function(){...}
}

А так -- он был бы вс равно общий, разница в том, наследуется ли он от своего класса, или от суперкласса.
Ответить с цитированием
  #13 (permalink)  
Старый 28.11.2014, 18:22
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

tsigel,
Я не имею ничего против дескрипторов, только там, где они нужны. А где не нужны -- там не нужны, все просто. Он преопределят то, что и так уже есть, это тупость.
Ответить с цитированием
  #14 (permalink)  
Старый 28.11.2014, 18:34
Интересующийся
Отправить личное сообщение для javacrypt Посмотреть профиль Найти все сообщения от javacrypt
 
Регистрация: 10.11.2014
Сообщений: 12

Сообщение от krutoy
Не, не совсем. Свой личный они имели бы, если бы ты написал
Сообщение от krutoy
А так -- он был бы вс равно общий, разница в том, наследуется ли он от своего класса, или от суперкласса.
А чем тогда засоряется память? Не улавливаю.
Ответить с цитированием
  #15 (permalink)  
Старый 28.11.2014, 18:36
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от javacrypt
А чем тогда засоряется память? Не улавливаю.
Ну, у тебя же может быть не один дочерний класс Product. Все дочерни классы, типа Apple будут дублировать прототип Product. А если он один, то в суперклассе Product смысла вобще нет.
Ответить с цитированием
  #16 (permalink)  
Старый 28.11.2014, 18:44
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

javacrypt,
В твоем коде, как-бы предполагается, что метод getName, будут иметь не только экзмпляры класса Аpple, но и экземземпляры классов Grape, Cherry, Cranberies и тп
Ответить с цитированием
  #17 (permalink)  
Старый 28.11.2014, 18:49
Интересующийся
Отправить личное сообщение для javacrypt Посмотреть профиль Найти все сообщения от javacrypt
 
Регистрация: 10.11.2014
Сообщений: 12

Перефразирую себя:
выходит, что все экземпляры "класса" Apple будут дублировать метод getName у себя в прототипе, вместо того, что брать его по ссылке из Product.prototype? Так?
Класс Product - абстрактный, у него не будет экземпляров. Все категории продуктов будут иметь общие методы унаследованные от него.
Ответить с цитированием
  #18 (permalink)  
Старый 28.11.2014, 18:54
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от javacrypt
будут дублировать метод getName у себя в прототипе
Ну а что значит дублировать, в данном контексте? Тут будет делегирование, каждый экземпляр просто будет лазить за методом в один общий __proto__. Технически никакого дублирования тут нет.
Сообщение от javacrypt
Класс Product - абстрактный, у него не будет экземпляров.
Ну, я имею в виду, что категории продуктов, как классы, наследуют от него, да.
Ответить с цитированием
  #19 (permalink)  
Старый 28.11.2014, 19:01
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
То есть выходит, что все экземпляры "класса" Apple будут иметь свой личный метод getName, в то время как если наследовать через прототип все экземпляры будут ссылаться на один и тот же прототип . Теперь стало понятно.
Нет, в JS копируются не объекты, а ссылки на них, то есть, дублироваться будут ссылки, а не методы (функции - тоже объекты). Засорения памяти как раз не произойдет. Дело в том, что копирование и наследование - это разные концепции, я же говорил:
Сообщение от Erolast
Если в Apple.prototype и Product.prototype будут одноименные методы, копирование перезапишет метод ребенка методом предка, наследование - нет.
И лучше не слушать крутого, он долбоёб тролль, обрати внимание на карму.

Последний раз редактировалось Erolast, 28.11.2014 в 19:25.
Ответить с цитированием
  #20 (permalink)  
Старый 28.11.2014, 19:09
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

javacrypt,
Тот дегенерат, который отписался выше, слабо представляет какой понос он выблевывает. Естественно, в js ничего вообще не копируетя, все создается и наполняется ссылками. Но это н значит, что объект с тысячью ссылок весит столько же, сколько пустой объект. А если бы было так, LOL, программы на JS вобще не потребляли бы память, на*й она нужна, ведь все что у нас есть -- объекты со ссылками. Зацени масштаб бредятины, ты в желтом доме такого не услышишь, цени момент

Последний раз редактировалось krutoy, 28.11.2014 в 19:13.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос по toDataURL() GodZiLA Общие вопросы Javascript 0 03.06.2014 17:21
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 14:50