Цитата:
|
Цитата:
Цитата:
Здесь статичные свойства наследуются. |
Цитата:
|
Цитата:
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, время: 01:55. |