簡體   English   中英

Javascript:onclick不會調用函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM