|
|
Да, просто замени весь шаблон на этот:
|

28.11.2014, 18:26
|
|
Интересующийся
|
|
Регистрация: 10.11.2014
Сообщений: 12
|
|
|
Теперь я кажется понял. Совсем забыл про ссылки на объекты в js. Спасибо. Я вас понял обоих.
|
|

28.11.2014, 21:56
|
 |
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Erolast, krutoy,
1. мне надо вызвать конструктор родительского класса - как?
2. мне надо вызвать супер метод - как?

__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
|
|

28.11.2014, 22:49
|
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
nerv_,
В чем проблема? Ты не можешь вызвать функцию?
проще всего так
function Super(){alert("Hello!")}
function F(){}
F.prototype=Object.create(Super.prototype)
F.prototype.constructor=F
o=new F
o.__proto__.__proto__.constructor()
я думаю.
Последний раз редактировалось krutoy, 28.11.2014 в 23:05.
|
|

28.11.2014, 23:02
|
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
|
Сообщение от nerv_
|
|
мне надо вызвать супер метод - как?
|
А суперметод ты вообще вызываешь обычно, он же наследуется
childObject.supermethod()
|
|

29.11.2014, 05:39
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
|
Сообщение от krutoy
|
|
А суперметод ты вообще вызываешь обычно, он же наследуется
|
А если ты его перекрыл своим?
__________________
В личку только с интересными предложениями
|
|

29.11.2014, 06:32
|
|
Профессор
|
|
Регистрация: 09.11.2014
Сообщений: 610
|
|
|
Сообщение от danik.js
|
|
А если ты его перекрыл своим?
|
function Super(){alert("Hello!")}
Super.prototype.onceAgain=function(){alert("Hello again!!!")}
function F(){}
F.prototype=Object.create(Super.prototype)
F.prototype.constructor=F
F.prototype.onceAgain=function(){alert(2)}
o=new F
o.onceAgain=function(){alert(1)}
o.onceAgain()
o.__proto__.onceAgain()
o.constructor.prototype.onceAgain()
o.__proto__.__proto__.onceAgain()
o.__proto__.__proto__.constructor.prototype.onceAgain()
|
|

29.11.2014, 07:16
|
 |
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Сообщение от nerv_
|
Erolast, krutoy,
1. мне надо вызвать конструктор родительского класса - как?
2. мне надо вызвать супер метод - как?
|
Есть три варианта: - В функции extend устанавливать ребенку в свойство ссылку на родителя.
function extend(Child, Parent) {
...
Child.Parent = Parent;
}
- Добираться до родительского класса через .prototype.__proto__ ребенка или __proto__.__proto__ инстанса ребенка. Можно оформить в функцию:
function getParent(Class) {
return Class.prototype.__proto__;
}
- Не париться и использовать ES6, в котором внутри методов класса доступно ключевое слово super, ссылающееся на родительский класс. Лучший вариант, если хочется нормального ООП.
|
|

29.11.2014, 11:33
|
 |
junior
|
|
Регистрация: 29.11.2011
Сообщений: 3,924
|
|
Erolast, за неимением ES6 в браузере, тебе не кажется, что будет логичным всегда устанавливать ссылку на супер-класс?
Давайте не будем изобретать велосипедов, а просто использовать node.js inherits, благо она кросс-платформенная (клиент/сервер).
Еще один тупой вопрос по наследованию
krutoy, то, что ты пишешь, вообще ад 
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Последний раз редактировалось nerv_, 29.11.2014 в 11:42.
|
|

29.11.2014, 12:10
|
 |
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
|
Цитата:
|
|
Erolast, за неимением ES6 в браузере, тебе не кажется, что будет логичным всегда устанавливать ссылку на супер-класс?
|
Не кажется. Компиляторы пошто? Тык, тык, тык.
|
|
|
|