我有一个简单的jQuery ready
事件,它通过调用setupView
对象中的函数来初始化视图。如何从内部嵌套函数调用父函数?
我的问题是,如何从init
函数调用功能setSomethingImportant
的适当方式如下所示?
由于呼叫是从与init
函数不同的执行上下文中进行的,因此this.setSomethingImportant()
不起作用。但是,如果我使用setupView.setSomethingImportant()
,它就可以工作。我遇到的问题是,如果var名称(setupView
)发生更改,我将不得不更改代码的主体。
(function() {
$(document).ready(function() {
setupView.init();
});
var setupView = {
currentState : "CT",
init : function() {
$("#externalProtocol").change(function() {
console.log("Changed =" + $(this).val());
setSomethingImportant();
// Question ? how to call a method in the setupView object
});
},
setSomethingImportant : function() {
this.currentState="TC";
console.log("Something has changed :" + this.currentState);
}
}
}(jQuery);
谢谢@Florent。说实话,我一直在使用你建议的方法。但我不确定是否将“this”存储在变量中是最佳做法。 – Rocky 2012-08-09 16:23:39
有时你没有选择。你使用这个_trick_的次数越少,你的代码越干净。 – Florent 2012-08-09 16:25:09