我已经使用 Javascript 一段时间了,我只是第一次尝试使用模块和 requireJS,很难理解新的设计模式!
这是我的第一次尝试:
require([
"jquery",
"testModule"
], function ($, testModule) {
$(function () {
var testInstance1 = testModule;
testInstance1.setID(11);
alert(testInstance1.id);
});
});
和 testModule.js
define([
'jquery'
], function ($) {
var id = 0;
var setID = function (newID) {
id = newID;
return id;
};
return {
setID: setID,
id:id
};
});
这将返回 0,而我期待的是 11。我错过了什么?
当然也是一个简化的例子。我想创建多个对象,每个对象都应该保持自己的变量状态。例如,如果我想要一个模块将列表附加到容器 DIV
但还包含在该列表中添加、清除或查询数据的函数,我应该如何构建模块函数以便每个实现都保持自己的状态。
谢谢
最佳答案
您实际上并没有遗漏任何与此处相关的 requireJS。问题是只有对象通过引用传递(也许数组......现在不能确定)。数字不是。因此,当您返回 {setID: setID, id: id} 时,“id”被设置为“id”的值,再也不会被更新。您要做的是使用诸如“getID”之类的函数,它将引用原始变量,而不是原始变量的值:
return {
setID: setID,
getID: function () {return id;}
};
然后……
testInstance1.setID(11);
alert(testInstance1.getID());
关于javascript - 如何使用 requireJS 访问模块变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12449845/