27.12.2011, 16:00
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Nekromancer
|
Это наследование прототипа. В прототипе не только методы, но и обычные свойства.
|
Но конструктор это ведь не прототип?
|
|
27.12.2011, 16:01
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
FINoM,
Причём тут конструктор? Хочешь наследование конструкторов, делай их отдельно, запуская старый конструктор в новом, как это делают в NodeJS. Либо пиши функцию аля createClass/defineClass.
Наследование прототипа никак не относится к конструктору.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
27.12.2011, 16:06
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Nekromancer
|
Наследование прототипа никак не относится к конструктору.
|
Я тебе говорю о наследовании класса, а не методов и свойств, определенных в прототипе. Или у тебя конструктор всегда пуст?
Сообщение от Nekromancer
|
запуская старый конструктор в новом
|
Расскажи, как делать наследование свойств родительского конструктора.
|
|
27.12.2011, 16:12
|
|
Профессор
|
|
Регистрация: 06.05.2009
Сообщений: 1,163
|
|
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
});
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
|
|
27.12.2011, 16:32
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Nekromancer, вариант, да. Но всё равно костыль.
|
|
27.12.2011, 17:14
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от FINoM
|
Nekromancer, вариант, да. Но всё равно костыль.
|
1) в чем проявляется костыль?
2) в чем преимущество классов по сравнению с прототипами что нужно использовать костыли?
|
|
27.12.2011, 17:18
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Livaanderiamarum
|
1) в чем проявляется костыль?
|
В том, что нужно создавать функцию для наследования.
Сообщение от Livaanderiamarum
|
2) в чем преимущество классов по сравнению с прототипами что нужно использовать костыли?
|
Первая половина фразы понятна, я выше уже писал.
|
|
27.12.2011, 17:32
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
Сообщение от FINoM
|
Первая половина фразы понятна, я выше уже писал.
|
1) зачем сопоставлять прототипы с классами?
2) в чем преимущества классов над прототипами?
|
|
27.12.2011, 18:04
|
|
Новичок
|
|
Регистрация: 05.09.2010
Сообщений: 2,298
|
|
Сообщение от Nekromancer
|
В JavaScript нет классов. Нет, конструктор не всегда пуст.
|
Кстати, конструктор чего? Обычно конструктор — это конструктор класса.
Сообщение от Livaanderiamarum
|
в чем преимущества классов над прототипами?
|
В том что классы — это классы: простые, понятные, без нужды строить велосипеды. Это устоявшийся элемент ООП, такой же как и процедура в процедурном программировании. Nekromancer предложил решение, о котором я не знал, при том, что программирую на JS уже около двух лет. При наличии классов, не понадобилось бы строить такие костыли.
|
|
27.12.2011, 18:06
|
Профессор
|
|
Регистрация: 25.12.2011
Сообщений: 786
|
|
FINoM, зачем сопоставлять прототипы с классами если при этом вы испытываете трудности?
|
|
|
|