理解javascript对象
我有一个非常基本的javascript问题,出于一些愚蠢的原因,我正在努力解决这个问题 如果你想象下面的物体。如何从'init'函数内部调用一个函数理解javascript对象,javascript,Javascript,我有一个非常基本的javascript问题,出于一些愚蠢的原因,我正在努力解决这个问题 如果你想象下面的物体。如何从'init'函数内部调用一个函数 TC.design = { init : function(){ //How would I run the loadPage function here? }, loadPage : function(){ } } 我已经试过了。loadPage();
TC.design = {
init : function(){
//How would I run the loadPage function here?
},
loadPage : function(){
}
}
我已经试过了。loadPage();我希望它可以工作,但它返回未定义
我显然没有掌握一些基本的东西,希望有人能解释
编辑:现在已解决此问题
多亏了约瑟夫·西尔伯和火箭,我意识到了我的错误
这个问题是由于对javascript.call()函数的误解引起的。我用TC.design.init.call()
调用了init
,我现在理解它是不正确的。对不起……这行不行
TC.design = {
init : function(){
TC.design.loadPage();
},
loadPage : function(){
alert('Booga')
}
}
这行吗
TC.design = {
init : function(){
TC.design.loadPage();
},
loadPage : function(){
alert('Booga')
}
}
this.loadPage
应该可以正常工作,除非您更改this
的值
例如:
setTimeout(function(){
TC.design.init();
}, 1000);
这很好用。当调用init
时,这是TC.design
setTimeout(TC.design.init, 1000);
这行不通。现在,这个
将是窗口
在init
中。因此,此.loadPage
将无法工作
因此,在调用TC.design.init
this.loadPage
时要小心,除非更改this
的值
例如:
setTimeout(function(){
TC.design.init();
}, 1000);
这很好用。当调用init
时,这是TC.design
setTimeout(TC.design.init, 1000);
这行不通。现在,这个
将是窗口
在init
中。因此,此.loadPage
将无法工作
因此,请注意如何在init
函数中调用TC.design.init,此
引用TG.design
对象this.loadPage()
应该可以工作,但是必须正确调用init
函数才能调用它
下面是一些示例代码:
var TC = {
design: {
init: function() {
this.loadPage();
},
loadPage: function() {
conosle.log('Works');
}
}
};
TC.design.init();
这里是小提琴:在您的init
函数中,this
指的是TG.design
对象this.loadPage()
应该可以工作,但是必须正确调用init
函数才能调用它
下面是一些示例代码:
var TC = {
design: {
init: function() {
this.loadPage();
},
loadPage: function() {
conosle.log('Works');
}
}
};
TC.design.init();
这里是小提琴:您如何调用init
?您可能正在更改this
的值。this.loadPage()
应该可以工作:当然this.loadPage()
可以工作。由于返回了undefined
(这可能意味着您没有在loadPage
中使用return
关键字,就像您向我们展示的代码一样),因此会得到undefined
。请注意,未定义的实际上就是您得到的。这意味着loadPage
被触发。否则,您的代码将引发异常。@Joseph您的快速小提琴提供了难以置信的简单答案。由于对javascript.call()函数的使用存在误解,所以我无意中调用了init。我使用了TC.design.call()而不是TC.design.init();如果你不想把你的胡言乱语变成一个答案,我会接受的,因为是你的胡言乱语给了我答案。非常感谢!您如何调用init
?您可能正在更改this
的值。this.loadPage()
应该可以工作:当然this.loadPage()
可以工作。由于返回了undefined
(这可能意味着您没有在loadPage
中使用return
关键字,就像您向我们展示的代码一样),因此会得到undefined
。请注意,未定义的实际上就是您得到的。这意味着loadPage
被触发。否则,您的代码将引发异常。@Joseph您的快速小提琴提供了难以置信的简单答案。由于对javascript.call()函数的使用存在误解,所以我无意中调用了init。我使用了TC.design.call()而不是TC.design.init();如果你不想把你的胡言乱语变成一个答案,我会接受的,因为是你的胡言乱语给了我答案。非常感谢!是的,上面的工作很好。。。然而,我试图理解为什么这个.loadPage不起作用。。。。我现在找到了原因。我将init作为TC.design.init.call()调用;啊!是的,上面的工作很好。。。然而,我试图理解为什么这个.loadPage不起作用。。。。我现在找到了原因。我将init作为TC.design.init.call()调用;啊!在这种情况下,代码将引发异常(尝试调用undefinedthis.loadPage
),但OP声明它返回undefined
@freakish:True。不管怎样,我还是把这个留在这里。仅供参考。在这种情况下,代码将引发异常(尝试调用undefinedthis.loadPage
),但OP声明它返回undefined
@freakish:True。不管怎样,我还是把这个留在这里。仅供参考。