0

我几天前开始OOP,所以我没有经验。我想知道是否有机会更改类属性的值以影响使用该类的所有对象?

例子:

function Balloon(ID){
    this.ID = ID;
    this.speed = 1; 
}

假设我有 5 个气球对象。现在我想在不使用 for 循环的情况下将它们的所有速度值更改为 2。

4

2 回答 2

5

你可以使用prototype它。查看以下示例:

function Balloon(ID){
    this.ID = ID;
}

Balloon.prototype.speed = 1;

b1 = new Balloon(1);
b2 = new Balloon(10);

console.log(b1.speed); // outputs 1
Balloon.prototype.speed = 15;
console.log(b2.speed); // outputs 15, which is now also 15 for all other Balloon instances
于 2013-07-11T15:04:07.730 回答
0

那么你需要编辑对象的本地静态变量:

var Balloon = (function(){

    var speed = null;

    function Balloon(ID){
        this.ID = ID;
        speed = 1; 
    }

    return Balloon;

})();

问题是现在所有的气球都将共享相同的速度!啊!
这根本不好......为了改变速度,你需要为它创建一个getter / setter......你真的不需要它。

所以——要同时改变所有可能Balloon类型对象的速度,同时允许每个气球在技术上具有不同的速度,唯一的结论是去每个Balloon对象并改变速度(对不起)

于 2013-07-11T15:02:00.860 回答