Прежде всего, я попыталсяПрототип Javascript проверяет дифференциацию «объявления функции» на «выражение функции», почему?
var o = {};
var Derived = function() {}
Derived.prototype = o;
var o2 = new Derived();
console.log(o.isPrototypeOf(o2));
Он печатает "истинный"
Тогда я попробовал выражение функции, как показано ниже:
var o = function(){}; //difference 1
var Derived = function() {}
Derived.prototype = new o();
var o2 = new Derived(); //difference 2
console.log(o.isPrototypeOf(o2));
Он печатает "ложь"
Я полагаю, что оба
"o={}" declares an object
"new o()" declares an object.
Но почему они отличаются конечными результатами?
Я думал, что я должен был быть умным и сказать вам нужно 'Derived.prototype = Object.create (o); 'но я понятия не имею, почему это заставляет его работать или почему это другое ... – Isaac