JavaScript difference between function and new function

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

Leave a Comment