我继承了一个代码库,我需要为我的工作进行更新。我正在慢慢了解他们正在尝试通过现有的关闭来完成什么,但是在尝试更新使用此功能的网站的一部分时我遇到了困难。我将给出代码试图完成的基本概述,看看是否有人可以提供帮助。
var TheObject = (function (){
var veryLargeDependantData = {
var1: {},
var2: {},
var3: [],
//Set these variables via functions
function1: function f1(data){...},
function2: function f2(data){...},
initialize: function initialize() { //set values for var1... var3}
};
return {initialize: veryLargeDependentData.initialize};
})().initialize();
由于我显然无法在网站上显示生产代码,因此必须这样做。但基本上veryLargeDependentData变量是函数的入口。当页面加载时,它调用初始化函数,一切都很愉快。但是现在我需要将此添加到旧页面的 onclick 事件中,并且萤火虫控制台说该变量未定义。在其他页面中,我可以毫无问题地使用它。
我的问题是发生了什么魔法导致闭包不属于这样的可调用命名空间的一部分。我有点 javascript noOOb,所以如果这个问题听起来有误导性,我深表歉意。
onclick='TheObject.initialize();'