2011-11-18 57 views
0

我是JavaScript新手。我有以下腳本的工作,爲什麼我不能在內部函數中使用「this」?

var navRef = this.navigator; 
function onSearch(templateName) { 
    navRef.onSearch(); 
} 

但不是下面的一個,我想明白爲什麼?任何幫助表示讚賞。 (導航器作爲參數發送給此對象)。

function onSearch(templateName) { 
    this.navigator.onSearch(); 
} 
+0

這是不可能回答,直到你向我們展示了你如何調用onSearch和定義你的代碼的地方。我建議你創建一個http://jsfiddle.net/演示。 –

+1

[這個關於'this'的MDN arcticle](https://developer.mozilla.org/en/JavaScript/Reference/Operators/this)可能會有幫助。 –

回答

0

你可能想在this關鍵字退房this article。實質上,this在一個函數中用於引用該函數執行的上下文。當有問題的函數被調用作爲對象的方法時,this引用該對象。當在全局範圍內調用該函數並且沒有實例參考時,this指的是window對象。

0

'this'指向兩種情況下的不同對象。在第一種情況下,'this'很可能是指將導航器作爲屬性的窗口對象。在第二種情況中,'this'很可能指的是任何對象調用函數。由於你沒有給出上下文,所以很難準確。但是這應該足以理解發生了什麼。

0

您需要詳細閱讀javascript scopes。在第一個例子中,'this'引用了當前範圍(具有navigator屬性)。在第二個例子中,「這個」實際上是參考當前功能範圍是英寸

0

JavaScript有詞彙範圍,以變量(例如您navRef)可以內部函數

var navRef = this.navigator; 
function onSearch(){ 
    navRef.onShow(); 
} 

的內部使用然而,「變量」this是一個邪惡的例外。每個功能都有自己的this(和它有depends on how the function was called值),所以如果您要訪問的外部this(它的屬性或一個),你需要使用一箇中間變量:

var that = this; 
function onSearch(){ 
    that.navigator.onSearch(); 
} 
相關問題