我可以在javascript中动态添加属性吗?

时间:2010-12-01 16:57:02

标签: javascript

在运行时向对象添加属性是否可以?它似乎运行正常,但是我应该注意哪些问题?

我正在使用第三方javascript API,它有一个对象类,我已经实例化并在实例化后添加了我自己的属性,如下面的代码:

例如,我可以这样做:

var Car = function (id, type) {
    this.id = id;
    this.type = type;
};

var myCar = new Car(1,"Nissan");

// CAN I DO THIS: (needsWork not a property of object Car)
myCar.needsWork = true;

3 个答案:

答案 0 :(得分:8)

是的,这称为对象增强。它是JavaScript中的一个关键功能。

答案 1 :(得分:8)

实际上,您有两种方法可以在JavaScript中执行此操作:

  1. 向实例添加方法或属性(仅限此车)

    var myCar = new Car(1,"Nissan");
    myCar.needsWork = true;
    
  2. 为汽车原型添加方法或属性(所有汽车,甚至已经存在的汽车)

    var myCar = new Car(1, "Nissan");
    var biggerCar = new Car(2, "Hummer");
    Car.prototype.needsWork = true;
    alert( myCar.needsWork && biggerCar.needsWork 
            ?  "We need work"
            : "Something wrong here"
    );
    
  3. <强>参考:

答案 2 :(得分:1)

这没有错。

请参阅此处的对象扩充:http://www.crockford.com/javascript/inheritance.html