- 甲
toplevelOBJ
對象在整個申請中使用的如this.toplevelOBJ
,其中I能夠訪問它的屬性,諸如,例如this.toplevelOBJ.mapArea.coordX
。 - 在
ClassB
有一個叫做blink
函數等待信號從外部源。 - 在
ClassC
我需要捕捉到這個信號,所以我成立了一個功能,capture
在ClassC
來檢索ClassB
問題
發送的信號,當通過capture()
功能發送到ClassC
, "this"
in this.toplevelOBJ
不再是指toplevelOBJ
,而是ClassC
。
正因爲如此,我送this.toplevelOBJ
作爲參數toplevel
通過capture()
功能,但在接收,我不知道如果從toplevelOBJ
一個函數被調用:toplevel.update()
,而我可以訪問它的屬性:toplevel.mapArea.coordX
QUESTION
當通過Object
發送作爲參數,是Object
完全相同?因爲當我檢查了Object
,我發現update()
功能toplevel.__proto__.__proto__
下,然而,我發現它的屬性立刻:toplevel.mapArea
代碼
// Class in which I am sending the object
var ClassB = exports.ClassB = ClassA.extend({
blink: function(key, value) {
ClassC.prototype.capture(key, value, this.toplevelOBJ);
}
});
// Class in which I am receiving the object
var ClassC = exports.ClassC = ClassA.extend({
capture: function(key, value, toplevel) {
/* Run Function of toplevel */
}
});
'this'的值由每個函數調用的情況決定。對我來說,這使得你的整個問題非常混亂。對我而言,「頂級對象」是指「全局對象」,在這種情況下,不需要通過this來訪問它。 – Pointy 2013-02-13 15:59:08