28.11.2014, 18:19
|
Профессор
|
|
Регистрация: 12.12.2012
Сообщений: 1,398
|
|
krutoy,
Он написал код описаный в стандартах и спецификациях языка. Конечно дескрипторы мало имеют аналогов в других языках программирования и в связи с этим многие их не любят. Но люди которые позиционируют себя как JavaScript программисты должны знать о них и для них эта конструкция будет вполне понятна, лаконична и обычна.
Последний раз редактировалось tsigel, 28.11.2014 в 18:22.
|
|
28.11.2014, 18:20
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от javacrypt
|
То есть выходит, что все экземпляры "класса" Apple будут иметь свой личный метод getName
|
Не, не совсем. Свой личный они имели бы, если бы ты написал
Apple=function(name){
this.name=name
this.getName=function(){...}
}
А так -- он был бы вс равно общий, разница в том, наследуется ли он от своего класса, или от суперкласса.
|
|
28.11.2014, 18:22
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
tsigel,
Я не имею ничего против дескрипторов, только там, где они нужны. А где не нужны -- там не нужны, все просто. Он преопределят то, что и так уже есть, это тупость.
|
|
28.11.2014, 18:34
|
Интересующийся
|
|
Регистрация: 10.11.2014
Сообщений: 12
|
|
Сообщение от krutoy
|
Не, не совсем. Свой личный они имели бы, если бы ты написал
|
Сообщение от krutoy
|
А так -- он был бы вс равно общий, разница в том, наследуется ли он от своего класса, или от суперкласса.
|
А чем тогда засоряется память? Не улавливаю.
|
|
28.11.2014, 18:36
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от javacrypt
|
А чем тогда засоряется память? Не улавливаю.
|
Ну, у тебя же может быть не один дочерний класс Product. Все дочерни классы, типа Apple будут дублировать прототип Product. А если он один, то в суперклассе Product смысла вобще нет.
|
|
28.11.2014, 18:44
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
javacrypt,
В твоем коде, как-бы предполагается, что метод getName, будут иметь не только экзмпляры класса Аpple, но и экземземпляры классов Grape, Cherry, Cranberies и тп
|
|
28.11.2014, 18:49
|
Интересующийся
|
|
Регистрация: 10.11.2014
Сообщений: 12
|
|
Перефразирую себя:
выходит, что все экземпляры "класса" Apple будут дублировать метод getName у себя в прототипе, вместо того, что брать его по ссылке из Product.prototype? Так?
Класс Product - абстрактный, у него не будет экземпляров. Все категории продуктов будут иметь общие методы унаследованные от него.
|
|
28.11.2014, 18:54
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
Сообщение от javacrypt
|
будут дублировать метод getName у себя в прототипе
|
Ну а что значит дублировать, в данном контексте? Тут будет делегирование, каждый экземпляр просто будет лазить за методом в один общий __proto__. Технически никакого дублирования тут нет.
Сообщение от javacrypt
|
Класс Product - абстрактный, у него не будет экземпляров.
|
Ну, я имею в виду, что категории продуктов, как классы, наследуют от него, да.
|
|
28.11.2014, 19:01
|
|
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Цитата:
|
То есть выходит, что все экземпляры "класса" Apple будут иметь свой личный метод getName, в то время как если наследовать через прототип все экземпляры будут ссылаться на один и тот же прототип . Теперь стало понятно.
|
Нет, в JS копируются не объекты, а ссылки на них, то есть, дублироваться будут ссылки, а не методы (функции - тоже объекты). Засорения памяти как раз не произойдет. Дело в том, что копирование и наследование - это разные концепции, я же говорил:
Сообщение от Erolast
|
Если в Apple.prototype и Product.prototype будут одноименные методы, копирование перезапишет метод ребенка методом предка, наследование - нет.
|
И лучше не слушать крутого, он долбоёб тролль, обрати внимание на карму.
Последний раз редактировалось Erolast, 28.11.2014 в 19:25.
|
|
28.11.2014, 19:09
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
javacrypt,
Тот дегенерат, который отписался выше, слабо представляет какой понос он выблевывает. Естественно, в js ничего вообще не копируетя, все создается и наполняется ссылками. Но это н значит, что объект с тысячью ссылок весит столько же, сколько пустой объект. А если бы было так, LOL, программы на JS вобще не потребляли бы память, на*й она нужна, ведь все что у нас есть -- объекты со ссылками. Зацени масштаб бредятины, ты в желтом доме такого не услышишь, цени момент
Последний раз редактировалось krutoy, 28.11.2014 в 19:13.
|
|
|
|