Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 28.11.2014, 19:26
Интересующийся
Отправить личное сообщение для javacrypt Посмотреть профиль Найти все сообщения от javacrypt
 
Регистрация: 10.11.2014
Сообщений: 12

Теперь я кажется понял. Совсем забыл про ссылки на объекты в js. Спасибо. Я вас понял обоих.
Ответить с цитированием
  #22 (permalink)  
Старый 28.11.2014, 22:56
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Erolast, krutoy,
1. мне надо вызвать конструктор родительского класса - как?
2. мне надо вызвать супер метод - как?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #23 (permalink)  
Старый 28.11.2014, 23:49
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 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, 29.11.2014 в 00:05.
Ответить с цитированием
  #24 (permalink)  
Старый 29.11.2014, 00:02
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Сообщение от nerv_
мне надо вызвать супер метод - как?
А суперметод ты вообще вызываешь обычно, он же наследуется
childObject.supermethod()
Ответить с цитированием
  #25 (permalink)  
Старый 29.11.2014, 06:39
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от krutoy
А суперметод ты вообще вызываешь обычно, он же наследуется
А если ты его перекрыл своим?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #26 (permalink)  
Старый 29.11.2014, 07:32
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 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()
Ответить с цитированием
  #27 (permalink)  
Старый 29.11.2014, 08:16
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

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

Erolast, за неимением ES6 в браузере, тебе не кажется, что будет логичным всегда устанавливать ссылку на супер-класс?

Давайте не будем изобретать велосипедов, а просто использовать node.js inherits, благо она кросс-платформенная (клиент/сервер).
Еще один тупой вопрос по наследованию

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

Последний раз редактировалось nerv_, 29.11.2014 в 12:42.
Ответить с цитированием
  #29 (permalink)  
Старый 29.11.2014, 13:10
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Erolast, за неимением ES6 в браузере, тебе не кажется, что будет логичным всегда устанавливать ссылку на супер-класс?
Не кажется. Компиляторы пошто? Тык, тык, тык.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос по toDataURL() GodZiLA Общие вопросы Javascript 0 03.06.2014 17:21
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49
Вопрос про ООП, цепочки прототипов. Shaci Общие вопросы Javascript 5 27.01.2010 14:50