2013-05-19 27 views
0

我有這種情況:JavaScript函數調用上下文

一個JavaScript function A(){}和另一function B(){}

我調用函數的模式有兩種:

  • 作爲函數B的參數 - 以獨立形式B(A());
  • - A();

是否有代碼來檢測的方式當函數A被評估爲參數,何時以獨立方式執行?

+4

不,沒有辦法做到這一點。你爲什麼想這麼做?這會爲你解決什麼問題?如果你描述這個問題,你更有可能得到一個有用的答案。 – Pointy

回答

0

我不知道你爲什麼會想這樣做,但你有幾個選項。

一個是簡單地傳遞其他參數。這是你應該做的。

另一種選擇是使用call()apply()來設置值this

function B() { 
    var context = 'some value'; 
    A.call(context); // `this` inside of A will be set to the value of context 
} 
2

是否有代碼來檢測功能時,一個被評估爲參數,當作爲一個獨立的執行方式?

沒有,因爲這不是發生了什麼。下面的兩個碼塊都或多或少是相同的,除非額外的存儲器中的點點爲var

function Implied() { 
    B(A()); 
} 

function Explicit() { 
    var retA = A(); 
    B(retA); 
} 

在兩種情況下,A正在從父函數調用,並且而不是B