当我调用方法时,即使我将指定另一个变量,变量的值也会改变。
app.js
var methods = require('./module');
var ObjectExample = {};
ObjectExample['name'] = 'NODE';
ObjectExample['array'] = [];
ObjectExample['array'].push(1);
methods.test1( ObjectExample );
methods.test2( ObjectExample );
module.js
module.exports.test1 = function( ObjectExample ){
var parameters = ObjectExample;
parameters['name'] = 'NODE.JS';
parameters['array'][0] = 2;
};
module.exports.test2 = function( ObjectExample ){
console.log( ObjectExample ); // {name:'NODE.JS', array:[2]}
};
为什么我可以在模块test2中执行此操作。
{name:'NODE',array:[1]}
答案 0 :(得分:0)
这是您传递给两个函数的同一个对象。因此,当您在一个模块中更改它时,它会在此对象的所有迭代中永久更改。您可以克隆此对象以避免此类行为。
答案 1 :(得分:0)
设置类变量的值
module.exports.test1 = function( ObjectExample ){
var parameters = ObjectExample;
parameters['name'] = 'NODE.JS';
parameters['array'][0] = 2;
this.ObjectExample = parameters;
};