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

表示されているエラーは、表示されているサンプル コードを反映していません。

とはいえ、コードを使用している方法では、次のように単純に減らすことができるはずです。

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

YourmyObjectは、そのオブジェクトを取得するために呼び出す必要がある関数です

<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 に答える
0

必要なのは、関数をすぐに実行することです。さらに、自己変数の宣言により、functionTwo から functionOne にアクセスできるようにクロージャを作成しようとしていると思われます。その場合は、次のようになります。

var myObject = (function() {

    function func1( ) {
    }

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