2011-09-11 128 views

回答

3

您可以用電話或APPY改變範圍:

function jCamp(code){ 
    function test(){ 
     alert(); 
    } 
    code.call(test); 
} 
jCamp(function(){ 
    this(); 
}); 

所以我們改變this引用私有函數

+0

這樣做。謝謝! –

1

試驗(+)是匿名函數,參數JCAMP()沒有定義(這是第8行的一個,如果你不改變你的代碼)中調用。功能test()僅在jCamp()的定義內部定義。

+0

那麼無論如何,它使一個函數只能通過jCamp()的參數函數調用? –

0
function jCamp(code){ 
    this.test = function(){ 
     alert("test"); 
    } 
    code(); 
} 
jCamp(function(){ 
    this.test(); 
}); 

我會做這種方式。

0

test是一個私人功能,只能在jCamp內使用。您不能從作爲參數傳遞的匿名函數中調用它。你可以把它的屬性,雖然,這樣的:

function jCamp(code){ 
    this.test = function(){ 
     alert(); 
    } 
    code(); 
} 
jCamp(function(){ 
    this.test(); 
}); 
+0

請注意,這將實際存儲全局'test',因爲'this'是'window'。 – delnan

0

功能的範圍時,它是創建,而不是當它被稱爲是確定的。

var a = 1; // This is the a that will be alerted 
function foo(arg) { 
     var a = 2; 
     arg(); 
} 
foo(function() { alert(a); }); 
相關問題