我目前正在研究我的第一個更復雜的JavaScript項目。到目前爲止,這很順利,但現在我有點卡住了。我有一個對象的中央數組。這些對象由構造函數生成,以防重要。JavaScript對象標識
讓我告訴你有問題的代碼之前,我繼續:
this.VariableChanged = function (variable) {
for (var i = 0; i < ruleSets.length; i++) {
var triggers = ruleSets[i].GetTriggers();
for (var j = 0; j < triggers.length; j++) {
projectManager.VariableManager.GetVariable("MyVariableName").value = "SomeOtherValue";
if (triggers[i] == variable) {
ruleSets[i].Trigger();
}
}
}
}
我加入了最內層for循環中的第一行代碼檢查是否兩個對象triggers[i]
和variable
是相同的。僅用於調試目的。事實上,他們似乎是這兩行對象在代碼行後面的值屬性中保存SomeOtherValue
。
但是triggers[i] == variable
返回false。這怎麼可能?
我可以使用屬於每個Variable對象的ID,所以這不是一個showstopper。但我想知道這裏發生了什麼。
我需要你的具體情況更有點背景,而是:「而事實上,他們似乎是,這兩個對象在這行代碼後的值屬性持有SomeOtherValue。」聽起來怪怪的。兩個對象具有相同屬性的事實並不意味着它們是同一個對象。 '''a = {value:1}; b = {value:1}; a == b'''將會是'''false'''。平等與等同不一樣。 – alemangui
在該行代碼之前,兩個對象都保持另一個值。在該行之後,兩個對象都將「SomeOtherValue」作爲新值。 – Mazen
什麼是varialbe值?你是否用projectManager.VariableManager.GetVariable(「MyVariableName」)檢查trigger [i]。value? – Thennarasan