Цитата:
|
ты подал вторым аргументом null, проверку прошли, а дальше ты делаешь попытку доступа к прототипу null
|
Не делается, потому что не проходит проверка, выделенная жирным шрифтом:
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);