簡體   English   中英

JavaScript,'this' 引用,當從錨標記調用對象函數時

[英]JavaScript, 'this' reference, when calling object function from anchor tag

這是我的 JS 的簡化版本:

var myObject = function() {
    return {
        functionOne: function() {
            //some other logic here
        },
        functionTwo: function() {
            var self = this;
            //some logic here
            //then call functionOne
            self.functionOne();
        }
    };
}

然后我在我的 html 正文中有這個:

<a href="#" onclick="myObject.functionTwo()">click me</a>

當我單擊鏈接時,為什么會收到錯誤Uncaught TypeError: Object [some url] has no method 'functionOne'

myObject是一個函數,需要為了得到這個對象調用

<a href="#" onclick="myObject().functionTwo()">click me</a>

為什么不將myObject定義為一個對象:

var myObject = {
    functionOne: function() {
        //some other logic here
    },
    functionTwo: function() {
        var self = this;
        //some logic here
        //then call functionOne
        self.functionOne();
    }
};

您看到的錯誤並未反映您顯示的示例代碼。

也就是說,按照您使用代碼的方式,您應該能夠將其簡化為:

var myObject = {
    functionOne: function() {
    },
    functionTwo: function() {
        this.functionOne();
    }
}

您需要的是立即執行您的功能。 此外,您對self變量的聲明使我認為​​您正在嘗試創建一個閉包,以便您可以從 functionTwo 訪問 functionOne。 如果是這種情況,那么我認為以下是您所追求的:

var myObject = (function() {

    function func1( ) {
    }

    function func2( ) {
        func1();
    }
    return {
        functionOne: func1,
        functionTwo: func2
    };
}());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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