JavaScript difference between function and new function
javascript, new-operator
Solution
PersonX = function(){};
Places a reference to an anonymous function into `PersonX`. `PersonX` points to a function.
PersonY = new function(){};
Places a reference to a newly constructed instance of an anonymous constructor function into `PersonY`. `PersonY` points to an object.
Regarding the prototype, `PersonY` has one. However, since there were no properties and methods attached to the constructor before nor after instantiation, it has a blank prototype*.
You can actually check `PersonY`'s prototype by doing `console.log(PersonY)`. You will see that it has a prototype property (I see it as `__proto__` in Chrome) which is "blank". But it has 2 hidden properties, `constructor` which is the constructor function that made the object, and another `__proto__` which leads you to the next "chain link" which would be the `Object` object.
*Not really blank since prototype is a chain. This prototype level may be blank, but the next higher prototype may have, or in this case, does have properties and methods.
Object prototype -> Constructor prototype -> Your Instance will have:
- toString() - blank - toString()
- hasOwnProperty() - hasOwnProperty()
- and more... - and more...
- ...but nothing from Constructor
Problem
The following JavaScript code is very confusing to me. Could anyone help me understand. Why does PersonY not have prototype property. ``` PersonX = function(){}; PersonY = new function(){}; alert(PersonX.prototype); alert(PersonY.prototype); ```