I understand that there are multiple ways to create an object in javascript and I have been reading that object literal syntax is generally preferred. (Correct?)
What I haven't been able to figure out is if there is ever a reason to use any of the other ways to create objects, such as a custom constructor function (var p = new Person("Adam")
)? Is it true to use a custom constructor function only if I want private variables or to add methods or properties to its prototype? Is there no way to do these in a literal?
The discussion usually is about to prefer
over
If you however create your own constructor functions you are perfectly allowed to instantiate them with the new keyword, nothing controversial there.
The preferred method would be to use JSON:
var p = { "name":"Adam" };
If you have a lot of member variables you need to initialize, or will be using a lot of objects (such as an array of them), etc. then it only makes sense to go ahead and create a function (constructor) which will do all of this for you. Unless you want your code to look like this:
You can use the custom constructor function when you want to create instances of objects, similar to Java.
For example:
Now I have two instances of this object. If I used String literals I would need to clone the object into a new var in order to get another instance.