1

我有一个我认为非常基本的 javascript 问题,出于某种愚蠢的原因,我正在努力解决这个问题。

如果你想象下面的对象。如何从“init”函数内部调用一个函数?

TC.design = {

        init : function(){
            //How would I run the loadPage function here? 
        },
        loadPage : function(){

        }
}

我试过 this.loadPage(); 我希望它可以工作,但它返回未定义。

我显然没有在这里掌握一些基本的东西,希望有人能解释一下。

编辑: 现在解决了...

感谢Joseph SilberRocket,我意识到了我的错误......

问题是由于对 javascript .call() 函数的误解而出现的。我打电话initTC.design.init.call()我现在理解是不正确的。我很抱歉....

4

3 回答 3

2

这行不通吗?

TC.design = {
        init : function(){
            TC.design.loadPage();
        },
        loadPage : function(){
           alert('Booga')
        }
}
于 2012-07-17T22:17:02.477 回答
2

this.loadPage应该可以正常工作,除非您更改this.

例如:

setTimeout(function(){
    TC.design.init();
}, 1000);

这将正常工作。当init被调用时,thisTC.design

setTimeout(TC.design.init, 1000);

这行不通。现在,this将在window里面init。因此,this.loadPage不会工作。

所以,要小心你如何调用TC.design.init.

于 2012-07-17T22:21:43.700 回答
0

在你的init函数中,this指的是TG.design对象;this.loadPage()应该可以工作,但是您必须init正确调用该函数才能调用它。

这是一些示例代码:

var TC = {
    design: {
        init: function() {
            this.loadPage();
        },
        loadPage: function() {
            conosle.log('Works');
        }
    }
};

TC.design.init();​

这是小提琴:http: //jsfiddle.net/85AWT/

于 2012-07-18T00:35:33.633 回答