Прототипы лучше классов?
Прототипы же лучше классов? Это как классы, только динамические, разве нет?
|
Цитата:
Цитата:
|
Цитата:
Суть и того и другого в том чтобы экономить память, храня общие свойства и методы единожды. |
Цитата:
Пример с прототипами: у меня есть некий класс X, который при инициализации создает HTML элемент для какой-нибудь информации. Я хочу сделать класс Y, который наследуется от X. X = function(){ // функция? блжад, это же конструктор, причем тут функция? this.elem = document.createElement('div'); } Y = function(){} Y.prototype = new X; //что бы вы думали? Теперь this.elem является одним и тем же объектом для всех экземпляров Y |
Цитата:
Мы говорим про теорию если что. |
На этот раз соглашусь с автором темы, по поводу его последнего поста.
FINoM, Вы как раз таки повесить на классическую систему наследования - классами и так же пытаетесь реализовать наследование в JS. Правильное наследование: var a = function(){}, b = function(){}; b.prototype = Object.create(a.prototype); И прототипы да, лучше. И их тем более не нужно ни с чем там сопоставлять. |
Цитата:
|
Livaanderiamarum,
тут скорее в теории медленнее язык программирования, из-за динамичности. типа Но это только в теории. |
Nekromancer, то есть прототипы не медленнее классов если абстрагироваться от языка?
|
Livaanderiamarum,
Ну во первых, даже классы быстрее, то их здесь нет. А есть прототипы, этого не изменишь. Как на низком уровне реализуются классы представления не имею, но не думаю что будет большое отличие в скорости между двумя динамически типизированными языками одного уровня, где в одном будет прототипное наследование, а в другом привычно классовое. |
Цитата:
|
Livaanderiamarum,
Ах, вы про это. Ну тогда вообще не понимаю о какой медленной работе может идти речь. Добавления свойства в прототип, на прямую не влияет на объекты созданные из этого прототипа. |
Цитата:
|
Livaanderiamarum,
Из-за этой псевдо проблемы они точно не медленее. Хуже - это лишь субъективное мнение любителей классов. Я например могу точно так же не любить классы и говорить, что они хуже, отыскивая массу причин. Вообще, прототипы это другое, примите это, сколько можно сравнивать. От этого вам не придёт понимание прототипного программирования, а на это как раз лучше было бы потратить своё время. |
Nekromancer, а я так бы сказал:
Если бы программы появлялись без программирования, я был бы рад этому. Мы идем к тому что скоро так и будет. А нравится какой то прием программирования или не нравится, это удел скорее рабов не способных мыслить широко и видеть причины следствий. |
Цитата:
|
Цитата:
|
Цитата:
|
FINoM,
Это наследование прототипа. В прототипе не только методы, но и обычные свойства. |
Цитата:
|
Цитата:
|
FINoM,
Причём тут конструктор? Хочешь наследование конструкторов, делай их отдельно, запуская старый конструктор в новом, как это делают в NodeJS. Либо пиши функцию аля createClass/defineClass. Наследование прототипа никак не относится к конструктору. |
Цитата:
Цитата:
|
FINoM,
В JavaScript нет классов. Нет, конструктор не всегда пуст. Это не отменяет пред идущего. Наследие конструкторов: var a = function(){}, b = function(){ a.apply(this, arguments); //b construct here } Функция наследования в самом общем виде: function inherits(parent, handler){ var constructor = function(){ parent.apply(this, arguments); handler.apply(this, arguments); } constructor.prototype = Object.create(parent.prototype); constructor.prototype.__parent__ = parent; return constructor; }; var a = function(){ //construct a here }, b = inherits(a, function(){ //construct b here }); |
Nekromancer, вариант, да. Но всё равно костыль.
|
Цитата:
2) в чем преимущество классов по сравнению с прототипами что нужно использовать костыли? |
Цитата:
Цитата:
|
Цитата:
2) в чем преимущества классов над прототипами? |
Цитата:
Цитата:
|
FINoM, зачем сопоставлять прототипы с классами если при этом вы испытываете трудности?
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
цитата: Цитата:
Нужно объективно сравнивать недостатки и преимущества.) а не на устояние смотреть. Вот я и прошу сравнить, мыл зачем сопоставлять если вещи разные, к одной привык к другой нет. Это же не определяет лучшесть или хужесть какой-то из них. ))) (сопоставления не в смысле обсуждения на форуме, а сопоставления в том контексте в котором он сказал) |
FINoM,
Ну вы как всегда критичны до невозможности :) |
объясните мне , что такое классы в javascript.
особенно про абстрактные упомяните, ага. |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 03:32. |