幾天前我開始OOP,所以我沒有體驗過。我想知道是否有機會改變類屬性的值以影響所有使用該類的對象?更改類變量的值
例子:
function Balloon(ID){
this.ID = ID;
this.speed = 1;
}
比方說,我有5個氣球對象。現在我想將其所有速度值更改爲2,而不使用for循環。
幾天前我開始OOP,所以我沒有體驗過。我想知道是否有機會改變類屬性的值以影響所有使用該類的對象?更改類變量的值
例子:
function Balloon(ID){
this.ID = ID;
this.speed = 1;
}
比方說,我有5個氣球對象。現在我想將其所有速度值更改爲2,而不使用for循環。
您可以使用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
那麼你就需要編輯對象的本地靜態變量:
var Balloon = (function(){
var speed = null;
function Balloon(ID){
this.ID = ID;
speed = 1;
}
return Balloon;
})();
的問題是,現在所有氣球將共享相同的速度! AHH!
這並不好......爲了改變速度,你需要爲它創建一個getter/setter ...你真的不需要你的情況。
所以 - 改變在同一時間所有可能Balloon
型物體的速度,同時允許每個氣球技術上有不同的速度,唯一的結論就是去每個Balloon
對象和改變速度(抱歉)
那些不是「類屬性」。它們是**實例**屬性,因爲它們是在每個實例對象上獨立設置的。 – Pointy
沒有迭代你感興趣的兩個氣球,現在有辦法實現你想要的。畢竟,你需要知道五個氣球中的哪一個需要首先改變。您可以使用班級「成員」更改所有5個氣球(請參閱Trogvar的答案),或者您必須單獨更改它們。 –
請在此處澄清@Neal,您希望將氣球類的所有對象的速度值更改爲2。因爲他低估了我的答案。謝謝:) – Trogvar