繁体   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