当我调用该方法时,即使我将分配另一个变量,变量的值也会更改。
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中执行此操作。
{名称:'NODE',数组:[1]}
这是您要传递给两个函数的同一对象。因此,当您在一个模块中对其进行更改时,此对象的所有迭代都将永久更改。您可以克隆此对象以避免这种行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句