-2

私が書いたときにbook.main.method();エラーが発生しました:Uncaught TypeError: Object function () {

window.book = window.book|| {};

    book.control = function() {
        var check_is_ready = 'check_is_ready';
        if(check_is_ready == 'check_is_ready') {
            this.startbook = function() {
                var bookMain = new book.main();
                    bookMain.method();
            return;
            };
        };
    };

$(function() {
    var control = new book.control();
    control.startbook();
});

(function () {
    book.main = function() {     
    var index =0;
        this.method = function() {
            index++;
            if (index <= 500){
                book.main.method();//  <-- this wrong
                // the error which I get :Uncaught TypeError: Object function () { 
                alert (index);
                }
         };
    };
})();

book.main.method();エラーなしで呼び出すには、代わりに何を書く必要がありますか?

どうもありがとう

4

2 に答える 2

0

book.mainコンストラクター( )とインスタンスを混同しています。

this.method = function() {で取得するインスタンスに関数を追加しますが、new book.main()ではありませんbook.main

正確な最終目標はわかりませんが、交換する必要があります

book.main.method();//  <-- this wrong

this.method();//  <-- this works

アラートの増分値を表示する場合は、2行を切り替える必要があることにも注意してください。

(function () {
    book.main = function() {     
    var index =0;
    this.method = function() {
        index++;
        if (index <= 2){
            console.log(index); // less painful with console.log than with alert
            this.method();
        }
     };
    };
})();
于 2013-01-07T08:49:34.020 に答える
0

私が正しく理解している場合、主な問題のあるコードは次のとおりです。

(function () {
    book.main = function() {     
    var index =0;
        this.method = function() {
            index++;
            if (index <= 500){
                book.main.method();//  <-- this wrong
                // the error which I get :Uncaught TypeError: Object function () { 
                alert (index);
            }
         };
    };
})();

method()を再帰的に呼び出そうとしています。再帰呼び出しを行う別の方法は、関数式に名前を付けることです ( methodFn)。この名前は、その関数の本体内でのみ有効であることを覚えておいてください。

(function () {
    book.main = function() {     
    var index =0;
        this.method = function methodFn() {
            index++;
            if (index <= 500){
                methodFn();
                alert (index);
            }
         };
    };
})();
于 2013-01-07T08:59:59.303 に答える