Is `new` in JavaScript just syntactic sugar for `.call`?
javascript
Solution
They are not equivalent in your example, because `bob` does not inherit from `Person.prototype` (it directly inherits from `Object.prototype`).
The equivalent version would be
Person.call(bob = Object.create(Person.prototype), "Bob", 55 );
Is it syntactic sugar? Might depend on how you define it.
`Object.create` was not available in earlier JS versions, so it was not possible to set up object inheritance without `new` (you are able to overwrite the internal `__proto__` property of an object in some browsers, but that is really bad practice).
As a reference, how `new` works is defined in http://es5.github.com/#x11.2.2 and http://es5.github.com/#x13.2.2. `Object.create` is described in http://es5.github.com/#x15.2.3.5.
Problem
In JavaScript, I was wondering if there is anything special about `new` or if it is just syntactic sugar for `call()`. If I have a constructor like: ``` function Person ( name, age ){ this.name = name; this.age = age; } ``` is ``` var bob = new Person( "Bob", 55 ); ``` any different than ``` var bob; Person.call( bob = new Object(), "Bob", 55 ); ``` ?