2

这是我的 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' ?

4

3 回答 3

1

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();
    }
};
于 2012-11-22T23:37:08.010 回答
1

您看到的错误并不反映您显示的示例代码。

也就是说,以您使用代码的方式,您应该能够将其简化为:

var myObject = {
    functionOne: function() {
    },
    functionTwo: function() {
        this.functionOne();
    }
}
于 2012-11-22T23:41:55.533 回答
0

您需要的是立即执行您的功能。除此之外,您对self变量的声明使我认为​​您正在尝试创建一个闭包,以便您可以从 functionTwo 访问 functionOne。如果是这种情况,那么我认为以下是您所追求的:

var myObject = (function() {

    function func1( ) {
    }

    function func2( ) {
        func1();
    }
    return {
        functionOne: func1,
        functionTwo: func2
    };
}());
于 2012-11-22T23:40:54.193 回答