function Foo() {}
var f1 = new Foo(); // This is clearly an instance of Foo.
var f2 = Object.create(Foo.prototype); // Is this an instance of Foo?
Ясно f2 instanceof Foo
возвращает true
, но я говорю в более общем объектно-ориентированном смысле.Существует ли строгое определение «экземпляра» функции-конструктора?
И, наконец, в чем разница между f1
и f2
, так что Chrome может различать их при печати на консоль?
console.log(f1); // Foo {}
console.log(f2); // Object {}
От точки зрения JS нет никакой разницы. Это просто внутренняя маркировка, которую Chrome делает для печати на консоли. – Bergi
Вы знаете, где находится эта маркировка. Это в спецификации? – Ben
Это не в спецификации, поэтому я сказал «внутреннее» и «нет разницы в JS» :-) Вероятно, это где-то в источнике V8 [[construct]]. – Bergi