代碼的相關部分的數組:如何改變一個實例
function myObj(wgtId, options, parentPage) {
if (!wgtId) return;
this.colors=['red','pink'];
hmiWidget.call(this, wgtId, options, parentPage);
}
myObj.prototype = new hmiWidget(); // Inheriting the base class Widget
myObj.prototype.setValue = function (newValue) {
var index = newValue;
var color = this.colors[index];
this.elem.style.backgroundColor = color;
};
$hmi.fn.myObj = function (options, parentPage) {
return new myObj(this.wgtId, options, parentPage);
};
用法:
$(".myClass").myObj({colors:['#ccccff','#000099']}); // start with blue
. . .
objWidget.setValue(newVal);
這一切運作良好。
現在我需要更改特定實例的顏色數組。
我試圖用 -
objWidget.colors[0] = "#ccffcc";
,但它影響所有實例。 (我不明白爲什麼所有的情況下都受到影響。)
從Javascript object members that are prototyped as arrays become shared by all class instances 我明白,我不能添加和使用
code:
myObj.prototype.setColor = function (index, newColor) {
this.colors[index] = newColor;
}
usage:
objWidget.setColor(0, "#009900");
因爲「原型」將分享我所有的顏色實例之間的陣列。
那麼如何才能影響只有一個實例的顏色數組?
你在哪裏創建objWidget?你使用的是新關鍵字嗎? –
好像每個實例已經有了它自己的'color'數組,所以你不應該有任何問題,請創建一個可運行的例子 –
$( 「.myClass」)。myObj({colors:['#ccccff','#000099']}); //我不使用new關鍵字 – Atara