Javascript 更改类变量的值

Javascript 更改类变量的值,javascript,class,oop,object,Javascript,Class,Oop,Object,我几天前开始OOP,所以我没有经验。我想知道是否有机会更改类属性的值以影响使用该类的所有对象 例如: function Balloon(ID){ this.ID = ID; this.speed = 1; } 假设我有5个气球对象。现在我想在不使用for循环的情况下将所有速度值更改为2。您需要编辑对象的局部静态变量: var Balloon = (function(){ var speed = null; function Balloon(ID){

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

例如:

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

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

您需要编辑对象的局部静态变量:

var Balloon = (function(){

    var speed = null;

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

    return Balloon;

})();
问题是,现在所有的气球都将共享相同的速度
这一点都不好。。。为了改变速度,你需要为它创建一个getter/setter。。。在你的情况下你真的不需要


因此——要同时更改所有可能的
气球
类型对象的速度,同时允许每个气球在技术上具有不同的速度,唯一的结论是转到每个
气球
对象并更改速度(抱歉)

您需要编辑对象的局部静态变量:

var Balloon = (function(){

    var speed = null;

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

    return Balloon;

})();
问题是,现在所有的气球都将共享相同的速度
这一点都不好。。。为了改变速度,你需要为它创建一个getter/setter。。。在你的情况下你真的不需要


因此——要同时更改所有可能的
气球
类型对象的速度,同时允许每个气球在技术上具有不同的速度,唯一的结论是转到每个
气球
对象并更改速度(抱歉)

您可以使用
原型
。检查以下示例:

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

您可以使用
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


这些不是“类属性”。它们是实例属性,因为它们是在每个实例对象上独立设置的。不需要重复您感兴趣的两个气球,现在就有了实现您想要的东西的方法。毕竟,你首先需要知道五个气球中的两个需要更换。您可以使用类“成员”(参见Trogvar的答案)更改所有5个气球,也可以单独更改它们。请在此处为@Neal澄清,您希望将类气球的所有对象的速度值更改为2。因为他对我的回答投了反对票。谢谢:)@user1769428:您想更改每个实例的速度吗?从下次开始,请让您的问题更有意义。。你的问题引起了混乱:-)。。从下一次添加伪代码或伪输出开始,这些都不是“类属性”。它们是实例属性,因为它们是在每个实例对象上独立设置的。不需要重复您感兴趣的两个气球,现在就有了实现您想要的东西的方法。毕竟,你首先需要知道五个气球中的两个需要更换。您可以使用类“成员”(参见Trogvar的答案)更改所有5个气球,也可以单独更改它们。请在此处为@Neal澄清,您希望将类气球的所有对象的速度值更改为2。因为他对我的回答投了反对票。谢谢:)@user1769428:您想更改每个实例的速度吗?从下次开始,请让您的问题更有意义。。你的问题引起了混乱:-)。。下一次添加伪代码或伪输出可能会有所帮助,但OP只想改变气球的两个速度。不全是5。(很抱歉,但是我告诉你)我认为你误解了他的说法。重读一遍。此部分
是否有机会更改类属性的值以影响所有对象
。他评论中的
2
部分与新的速度值有关:)我也读对了。您没有保留上下文-他想更改2上的速度值。如果你注意到他的帖子的开头,他想为所有的对象做这件事。谢谢你,特罗格瓦尔,我一直在等待答案。现在一切都很好。@mkkrolik Welcome:)如果这个答案最适合你,别忘了接受它,但OP只想改变气球的两个速度。不全是5。(很抱歉,但是我告诉你)我认为你误解了他的说法。重读一遍。此部分
是否有机会更改类属性的值以影响所有对象
。他评论中的
2
部分与新的速度值有关:)我也读对了。您没有保留上下文-他想更改2上的速度值。如果你注意到他的帖子的开头,他想为所有的对象做这件事。谢谢你,特罗格瓦尔,我一直在等待答案。现在一切都很好。@mkkrolik Welcome:)如果这个答案最适合你,别忘了接受itOk fine,所以我将使用循环。非常感谢。我很乐意帮助@user1769428:-DOk很好,所以我将使用loop。非常感谢。我很乐意帮助@user1769428:-D