27.12.2011, 05:27
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Прототипы лучше классов?
Прототипы же лучше классов? Это как классы, только динамические, разве нет?
Последний раз редактировалось Livaanderiamarum, 27.12.2011 в 05:30.
|
|
27.12.2011, 05:31
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
Сообщение от Livaanderiamarum
|
Прототипы же лучше классов?
|
Имхо, да.
Сообщение от Livaanderiamarum
|
Это как классы, только динамические, разве нет?
|
Нет.
|
|
27.12.2011, 05:32
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от trikadin
|
Имхо, да.
Нет.
|
ну а в чем разница? (только не надо мне ссылки давать, как я уже говорил я разбираюсь в этой теме)
Суть и того и другого в том чтобы экономить память, храня общие свойства и методы единожды.
|
|
27.12.2011, 06:57
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Livaanderiamarum
|
Прототипы же лучше классов?
|
Как по мне, нет, из-за сложного сопоставления с устоявшейся парадигмой классов. Библиотеки для поддержки традиционного ООП считаю костылями.
Пример с прототипами: у меня есть некий класс X, который при инициализации создает HTML элемент для какой-нибудь информации. Я хочу сделать класс Y, который наследуется от X.
X = function(){ // функция? блжад, это же конструктор, причем тут функция?
this.elem = document.createElement('div');
}
Y = function(){}
Y.prototype = new X;
//что бы вы думали? Теперь this.elem является одним и тем же объектом для всех экземпляров Y
|
|
27.12.2011, 13:26
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от FINoM
|
Как по мне, нет, из-за сложного сопоставления с устоявшейся парадигмой классов. Библиотеки для поддержки традиционного ООП считаю костылями.
Пример с прототипами: у меня есть некий класс X, который при инициализации создает HTML элемент для какой-нибудь информации. Я хочу сделать класс Y, который наследуется от X.
X = function(){ // функция? блжад, это же конструктор, причем тут функция?
this.elem = document.createElement('div');
}
Y = function(){}
Y.prototype = new X;
//что бы вы думали? Теперь this.elem является одним и тем же объектом для всех экземпляров Y
|
ну с таким подходом вывод такой что ты не умеешь полноценно пользоваться протатипами. да и вообще рассуждаешь на уровне синтаксиса и.т.п.
Мы говорим про теорию если что.
|
|
27.12.2011, 13:32
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
На этот раз соглашусь с автором темы, по поводу его последнего поста.
FINoM,
Вы как раз таки повесить на классическую систему наследования - классами и так же пытаетесь реализовать наследование в JS.
Правильное наследование:
var a = function(){},
b = function(){};
b.prototype = Object.create(a.prototype);
И прототипы да, лучше. И их тем более не нужно ни с чем там сопоставлять.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
27.12.2011, 13:42
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от Nekromancer
|
На этот раз соглашусь с автором темы, по поводу его последнего поста.
FINoM,
Вы как раз таки повесить на классическую систему наследования - классами и так же пытаетесь реализовать наследование в JS.
Правильное наследование:
var a = function(){},
b = function(){};
b.prototype = Object.create(a.prototype);
И прототипы да, лучше. И их тем более не нужно ни с чем там сопоставлять.
|
Привет, да, но в теории, из-за динамичности, они медленнее. типа
|
|
27.12.2011, 13:44
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Livaanderiamarum,
тут скорее в теории медленнее язык программирования, из-за динамичности. типа
Но это только в теории.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
27.12.2011, 13:49
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Nekromancer, то есть прототипы не медленнее классов если абстрагироваться от языка?
|
|
27.12.2011, 14:11
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
Livaanderiamarum,
Ну во первых, даже классы быстрее, то их здесь нет. А есть прототипы, этого не изменишь.
Как на низком уровне реализуются классы представления не имею, но не думаю что будет большое отличие в скорости между двумя динамически типизированными языками одного уровня, где в одном будет прототипное наследование, а в другом привычно классовое.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
|
|