2

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?

1
  • prototypal inheritance, class extension, simplified construction of repetitive objects, type checking via instanceof... to name a few. Commented Apr 3, 2012 at 14:24

3 Answers 3

2

You can use the custom constructor function when you want to create instances of objects, similar to Java.

For example:

function MyObj(x){
   this.x = x;
}

MyObj.prototype.printX = function(){
   alert(this.x);
}

var obj1 = new MyObj("hello");
var obj2 = new MyObj("hello2");
obj1.printX();//prints hello
obj2.printX();//prints hello2

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.

Sign up to request clarification or add additional context in comments.

Comments

2

The discussion usually is about to prefer

var myObject = {};

over

var myObject = new Object();

If you however create your own constructor functions you are perfectly allowed to instantiate them with the new keyword, nothing controversial there.

Comments

1

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:

var a = { "name":"Adam", "age":23, "city":"Boston" };
var b = { "name":"Jeff", "age":24, "city":"San mateo" };
var c = { "name":"Aaliyah", "age":25, "city":"New York" };
var d = { "name":"Mary", "age":26, "city":"Dallas" };

6 Comments

JSON seems like the wrong terminology. JSON doesn't allow methods for one.
@user895400, JSON means JavaScript Object Notation. This is JavasScript, and we're using it's object notation. JSON is correct.
Plus it does allow methods; you can create a function within a JSON object (though it's not good practice). Typically, JSON is meant to be neat and compact.
JSON is a data transfer format. It is a combination of array and object literal notation. If it means the same thing as object literals, why correct me and say that the preferred format is JSON, why not just agree with me that object literals are preferred?
@zzzzBov: JSON is a subset of JavaScript's object literal syntax, so is not really correct here.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.