为什么我不能在内部函数中使用“this”?

时间:2011-11-18 23:09:55

标签: javascript object reference

我是JavaScript新手。我有以下脚本工作,

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

但不是下面那个,我想知道为什么?任何帮助表示赞赏。 (导航器作为参数发送到此对象)。

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

4 个答案:

答案 0 :(得分:0)

您可能希望在this关键字上查看this article。实质上,this在函数中用于引用执行该函数的上下文。当有问题的函数被调用为对象的方法时,this引用该对象。在全局范围内调用函数且没有要引用的实例时,this引用window对象。

答案 1 :(得分:0)

'this'指向两种情况下的不同对象。在第一种情况下,“this”最有可能是指具有导航器作为属性的windows对象。在第二种情况下,“this”很可能是指调用该函数的任何对象。由于你没有提供上下文,因此很难确切。但这应该足以了解正在发生的事情。

答案 2 :(得分:0)

您需要阅读javascript scopes。在第一个例子中,这个'正在引用当前范围(具有navigator属性)。在你的第二个例子中,' this'实际上是引用它所在的当前函数范围。

答案 3 :(得分: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();
}