Which way is best for creating an object in JavaScript? Is `var` necessary before an object property?

前端 未结 8 1887
无人共我
无人共我 2020-11-27 08:59

So far I saw three ways for creating an object in JavaScript. Which way is best for creating an object and why?

I also saw that in all of these examples the keyword

8条回答
  •  无人及你
    2020-11-27 09:39

    There is no best way, it depends on your use case.

    • Use way 1 if you want to create several similar objects. In your example, Person (you should start the name with a capital letter) is called the constructor function. This is similar to classes in other OO languages.
    • Use way 2 if you only need one object of a kind (like a singleton). If you want this object to inherit from another one, then you have to use a constructor function though.
    • Use way 3 if you want to initialize properties of the object depending on other properties of it or if you have dynamic property names.

    Update: As requested examples for the third way.

    Dependent properties:

    The following does not work as this does not refer to book. There is no way to initialize a property with values of other properties in a object literal:

    var book = {
        price: somePrice * discount,
        pages: 500,
        pricePerPage: this.price / this.pages
    };
    

    instead, you could do:

    var book = {
        price: somePrice * discount,
        pages: 500
    };
    book.pricePerPage = book.price / book.pages;
    // or book['pricePerPage'] = book.price / book.pages;
    

    Dynamic property names:

    If the property name is stored in some variable or created through some expression, then you have to use bracket notation:

    var name = 'propertyName';
    
    // the property will be `name`, not `propertyName`
    var obj = {
        name: 42
    }; 
    
    // same here
    obj.name = 42;
    
    // this works, it will set `propertyName`
    obj[name] = 42;
    

提交回复
热议问题