从Object Literal调用函数
var runApp = {
init: function(){
this.validate();
},
run: function() {
var myStr = "My Name";
var abc = function()
{
return myStr;
}
},
validate: function() {
var val = this.run().abc(); // It Gives "Uncaught TypeError: Cannot call method 'abc' of undefined "
alert(val);
}
};
runApp.init();
如何在函数validate中调用函数abc()
?
答案 0 :(得分:1)
您可以从对象内的abc
函数返回run
函数:
run: function() {
var myStr = "My Name";
var abc = function() {
return myStr;
}
return { abc : abc };
}
然后this.run().abc()
将有效。
答案 1 :(得分:1)
函数abc在“run”的范围内定义,因此无法从另一个函数访问。如果你真的想要这个,你可以在“this”范围内提供“abc”。
var runApp = {
init: function(){
this.validate();
},
run: function() {
var myStr = "My Name";
this.abc = function() {
return myStr;
}
},
validate: function() {
this.run(); // run this one first so function abc exists
var val = this.abc();
alert(val);
}
}
runApp.init();
简而言之:如果不修改代码本身,就无法做到这一点。
答案 2 :(得分:0)
由于您的run
方法未返回包含abc
函数的对象,因此您无法调用它。它返回undefined。
对此的一个解决方案是,如果您返回一个具有名为abc
的方法的对象。