
11.08.2015, 17:33
|
|
Профессор
|
|
Регистрация: 07.08.2015
Сообщений: 154
|
|
Erolast,
с ходу возникла непонятка
subClass.prototype = Object.create(superClass && superClass.prototype,
ты почему тут перезаписываешь прототип сабклассу? если сабкласс наследует что-то у суперкласса, это не значит что он должен забыть о себе. Или я что-то не так понял?
|
|

11.08.2015, 17:45
|
|
Профессор
|
|
Регистрация: 07.08.2015
Сообщений: 154
|
|
Erolast,
и вот еще непонятка.
я глянул в описании setPrototypeOf, судя по этому вот полифилу
Object.setPrototypeOf = Object.setPrototypeOf || function(obj, proto) {
obj.__proto__ = proto;
return obj;
}
в качестве аргументов там объекты(настоящие), а у тебя
if (superClass) {
Object.setPrototypeOf(subClass, superClass);
}
функции (а-ля "классы"). Как это понимать?
|
|

11.08.2015, 17:45
|
 |
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
|
Цитата:
|
|
ты почему тут перезаписываешь прототип сабклассу?
|
Подразумевается, что функция inherits будет применяться сразу после объявления класса, до установки методов в прототип, пока он еще чистый - тогда ничего не перезапишется. Можно заменить на более простое
Object.setPrototypeOf(subClass.prototype, superClass && superClass.prototype);
В контексте организации множественного наследования ничего не изменится.
|
|

11.08.2015, 17:47
|
 |
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
|
Цитата:
|
в качестве аргументов там объекты(настоящие), а у тебя
[js]
if (superClass) {
Object.setPrototypeOf(subClass, superClass);
}
[js]
функции (а-ля "классы"). Как это понимать?
|
Что не так? Функции (классы) в JS - те же настоящие объекты, и у них тоже есть прототип (который [[Prototype]]).
Object.setPrototypeOf - это то же, что и установка __proto__, только по стандарту ES6.
И давай лучше в той теме общаться, здесь это оффтоп как-то.
|
|

11.08.2015, 17:48
|
|
Профессор
|
|
Регистрация: 07.08.2015
Сообщений: 154
|
|
|
Сообщение от Erolast
|
|
В контексте организации множественного наследования ничего не изменится.
|
Нет, так не годится. Допустим, у меня есть класс, который уже содержит в своем прототипе foo. я наследую, и теряю это foo, при таком раскладе. Это детский сад
|
|

11.08.2015, 17:49
|
 |
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
|
|
|

11.08.2015, 17:49
|
|
Профессор
|
|
Регистрация: 07.08.2015
Сообщений: 154
|
|
|
Erolast,
хорошо, ответ на этот пост читай в той теме
|
|

11.08.2015, 17:50
|
 |
Профессор
|
|
Регистрация: 22.05.2015
Сообщений: 384
|
|
|
Сообщение от Erolast
|
|
С чего ты взял?
|
не понимаешь ты шуток)
надо "receive", а у тебя "recieve", может опечатка
|
|

11.08.2015, 17:50
|
 |
Профессор
|
|
Регистрация: 24.09.2013
Сообщений: 1,436
|
|
Сообщение от javaQest
|
|
Нет, так не годится. Допустим, у меня есть класс, который уже содержит в своем прототипе foo. я наследую, и теряю это foo, при таком раскладе. Это детский сад
|
Ты хочешь наследовать в рантайме? Окей, поправил.
Просто я ж с ES6 переписывал, а там наследование устанавливается в момент объявления класса.
|
|
|
|