Цитата:
|
Цитата:
Цитата:
Здесь статичные свойства наследуются. |
Цитата:
|
Цитата:
Object.setPrototypeOf(subClass.prototype, superClass && superClass.prototype); я не помню, что будет, если прототипом ставишь false, но в любом случае, фигня. |
Цитата:
|
Цитата:
Object.setPrototypeOf(subClass.prototype, *!*superClass*/!* && superClass.prototype); Цитата:
function inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } Object.setPrototypeOf(subClass.prototype, superClass && superClass.prototype); if (superClass) { Object.setPrototypeOf(subClass, superClass); } } var Class = function() {}; inherits(Class, null); var instance = new Class(); console.log(instance); |
Erolast,
Да, поспешил. Я, честно говоря и не знал, что null&&sоmething возвращает null, не логично это, сука ну ладно, смотрим дальше. |
Erolast,
А все таки, зачем это? Не проще ли, если нет второго валидного аргумента (ф-ции), сразу валить код. Ну подал ты нуль, и нахер он тебе там нужен? |
Erolast,
короче, я пока твою первую ф-цию вот так переписал inherits=function(subClass, superClass){ if(!(typeof subClass==="function"&&typeof superClass==="function")) throw "typeERR" subClass.prototype.__proto__=superClass.prototype } суть та же, а говна меньше. "cтатические" св-ва нахер не упали, никакого наследования они не реализуют, это детсад |
Erolast,
Да, и вот еще что. Ты все равно не прав, со своим нулем. Если ты подаешь нуль, в качестве второго аргумента, у тебя прототип прототипа субкласса перезаписывается нулем. Это непредсказуемое, и неадекватное поведение. |
Часовой пояс GMT +3, время: 18:49. |