[英]Javascript: onclick does not call function
當我運行以下代碼時,將顯示警報消息,但this.test()無法運行。
function SomeFunction() {
document.onclick = function(e) {
alert("Hi");
this.test();
};
}
SomeFunction.prototype.test = function (){
...
}
但是,當我嘗試這樣做:
function SomeFunction() {
document.onclick = this.test();
}
SomeFunction.prototype.test = function (){
...
}
this.test()將運行。
編輯:我已經添加了更多細節到我的代碼。
在第一個示例中,單詞“ this”是指功能本身。 因此,功能測試將超出其范圍。
但是在第二個代碼中,您正在告訴代碼this.test()是實際的onclick函數,這就是為什么它在此處起作用而不是在第一個函數上起作用的原因。
您的問題與范圍有關。 嘗試:
document.onclick = function(e) {
alert("Hi");
test();
};
this
取決於調用它的位置。 在你的第一個例子,你從一個匿名函數中調用它,因此范圍this
轉移到該函數內部。 在第二個示例中,范圍是更高的級別,並且引用了SomeFunction()
函數。
由於你的函數嵌套在另一個函數里面,你可能要重新分配this
到另一個變數是訪問了作用域鏈。 例如
function SomeFunction() {
that = this;
document.onclick = function(e) {
alert("Hi");
that.test();
};
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.