gpt4 book ai didi

javascript - 如何从内部嵌套函数调用父函数?

转载 作者:行者123 更新时间:2023-11-29 17:22:09 25 4
gpt4 key购买 nike

我有一个简单的 jQuery ready 事件,它通过调用 setupView 对象中的函数来初始化 View 。

我的问题是,从 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);

最佳答案

this存储到一个变量中:

var setupView = {
currentState: "CT",
init: function() {
// Keep a reference to 'this'
var self = this;
$("#externalProtocol").change(function() {
console.log("Changed =" + $(this).val());

// Use the old 'this'
self.setSomethingImportant();
});
},
setSomethingImportant: function() {
this.currentState = "TC";
console.log("Something has changed :" + this.currentState);
}
};

参见 Working demo .

关于javascript - 如何从内部嵌套函数调用父函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11887378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com