从另一个模块中修改模块中的数组
RequireJS modyfing array inside module from another module
我有以下模块名为maps2在require JS:
define([], function(){
var z = [];
function changeZ(){
z = [1,2,3];
console.log(z);
}
return {
z: z,
changeZ: changeZ
}
});
和主文件:
requirejs(['maps2'], function(maps2){
console.log(maps2.z);
maps2.changeZ();
console.log(maps2.z);
});
问题来了:我期望的结果是:
[]
[1,2,3]
[1,2,3]
然而,我得到的结果是:
[]
[1,2,3]
[]
我有点困惑。为什么第三控制台日志产生[]
而不是修改z
后调用changeZ
函数数组?
你所做的与你所做的本质上没有什么不同:
var a = [];
var b = a;
b = [1, 2, 3];
为什么b = [1, 2, 3]
之后要改变a
的值??在你的代码中,字段z
的模块的返回值是从变量z
初始化的,但如果你分配给变量z
,为什么该字段的值要改变?
如果您希望changeZ
影响从模块返回的值,您可以这样做:
define([], function(){
var exports = {
z: [],
changeZ: changeZ
};
function changeZ(){
exports.z = [1,2,3];
console.log(exports.z);
}
return exports;
});
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 如何从NodeJS中的模块返回数组
- 使用RequireJS从数组动态加载模块
- 奇怪的壁虎行为(试图在js模块之间传递一个nsiDomWindows数组)
- SpringMVC如何从表单子模块上的JS数组填充部分模型
- JavaScript模块.单击时递增数组
- NodeJS模块填充的数组变成空对象.为什么
- 让app.js中的数组在模块中可用
- 从另一个模块中修改模块中的数组
- 如何在Node模块之间共享数组状态