在同一个对象中调用另一个函数

时间:2013-12-11 19:02:06

标签: javascript

在下面的代码中,我想将带参数“winter”的print_season函数的引用传递给函数inner_function。

tony = {
    print_season: function (season) {
        console.log(">>season is" + season);
    },

    report: function () {
        console.log(">>report");
        this.inner_object.inner_function(this.print_season("winter"));
    }, 

    inner_object: {
        inner_function: function(callback) {
            console.log(">>inner_function=" + callback());
        }
    }
}

tony.report();

然而,当我这样做时,调用而不是传递函数,我最终得到:

TypeError: callback is not a function
    console.log(">>inner_function=" + callback());

在这种情况下,如何传递具有特定参数的函数,但确保不调用它?

感谢。

3 个答案:

答案 0 :(得分:1)

您没有传递任何功能。

您实际上只是传递undefined


可能希望print_season返回回调函数:

...

print_season: function (season) {
    // return a callback function
    return function() {
        console.log(">>season is" + season);
    };
},

...

答案 1 :(得分:0)

您正在调用print_season

尝试这样的事情。

this.inner_object.inner_function(function() { this.print_season("winter") });

答案 2 :(得分:0)

试试这个:

tony = {
print_season: function (season) {
    console.log(">>season is" + season);
},

report: function () {
    console.log(">>report");
    this.inner_object.inner_function(function(){this.print_season("winter")});
}, 

inner_object: {
    inner_function: function(callback) {
        console.log(">>inner_function=" + callback());
    }
}
}
tony.report();

或者这个:

tony = {
print_season: function (season) {
 return function(){
     console.log(">>season is" + season);
 }
},

report: function () {
    console.log(">>report");
    this.inner_object.inner_function(this.print_season("winter"));
}, 

inner_object: {
    inner_function: function(callback) {
        console.log(">>inner_function=" + callback());
    }
}
}
tony.report();

目标是让函数(回调)不是别的。