我是JavaScript新手。我有以下脚本工作,
var navRef = this.navigator;
function onSearch( templateName) {
navRef.onSearch();
}
但不是下面那个,我想知道为什么?任何帮助表示赞赏。 (导航器作为参数发送到此对象)。
function onSearch( templateName) {
this.navigator.onSearch();
}
答案 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();
}