Ответ 1
PersonX = function(){};
Помещает ссылку на анонимную функцию на PersonX
. PersonX
указывает на функцию.
PersonY = new function(){};
Помещает ссылку на вновь созданный экземпляр анонимной функции-конструктора в PersonY
. PersonY
указывает на объект.
Что касается прототипа, PersonY
имеет один. Однако, поскольку не было свойств и методов, связанных с конструктором до и после создания экземпляра, у него есть пробел опытный образец*.
Фактически вы можете проверить прототип PersonY
, выполнив console.log(PersonY)
. Вы увидите, что у него есть свойство прототипа (я вижу его как __proto__
в Chrome), который является "пустым". Но он имеет 2 скрытых свойства, constructor
, который является конструкторской функцией, создавшей объект, и другой __proto__
, который приводит вас к следующей "цепочке", которая будет объектом Object
.
* Не совсем пустой, так как прототип является цепочкой. Этот уровень прототипа может быть пустым, но следующий более высокий прототип может иметь или в этом случае имеет свойства и методы.
Object prototype -> Constructor prototype -> Your Instance will have:
- toString() - blank - toString()
- hasOwnProperty() - hasOwnProperty()
- and more... - and more...
- ...but nothing from Constructor