2016-10-10 20 views
-1

我看到代碼:js中有什麼「call」函數?

Host.call(this, logger, config); 

Host是沒有父函數名。
call似乎沒有在函數的定義中定義。

call特殊功能?由於call是一個高度使用的詞,因此對於任何有用的解釋來說,搜索「JS調用」似乎並不容易。

+0

嗯..它調用函數。 (在你的例子中是'Host') – Maxx

+2

這應該有助於:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call。簡而言之,它會改變函數的上下文並調用它。另一個參考鏈接:http://stackoverflow.com/questions/15455009/javascript-call-apply-vs-bind – Rajesh

+0

在SO上詢問並回答無數次 –

回答

1

.call()套到thisthisHost功能,在第一個參數傳遞,其中loggerconfig是附加參數傳遞給Host功能

function Host(a, b) { 
 
    // `this` : `obj` 
 
    console.log("in Host", this, a, b); 
 
    this.a = a;  
 
    this.b = b; 
 
} 
 

 
var obj = {}; 
 

 
Host.call(obj, 1, 2); 
 

 
console.log(obj.a, obj.b); // set at `obj` : `this` at call to `Host`

1

所有的功能有兩個內置的方法,允許程序員提供參數this變量也:callapply

所以在你的問題中,Host方法被稱爲與loggerconfig參數,但你也傳遞一個參考目前無論是this

相關問題