Javascript object creation using literals vs custom constructor functions

前端 未结 3 794
天命终不由人
天命终不由人 2021-01-07 02:01

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?)

Wha

相关标签:
3条回答
  • 2021-01-07 02:08

    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.

    0 讨论(0)
  • 2021-01-07 02:12

    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.

    0 讨论(0)
  • 2021-01-07 02:28

    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" };
    
    0 讨论(0)
提交回复
热议问题