js更改变量会影响到原始变量
js Change variable will affect to original variable
很抱歉,我不知道如何解释,但情况就像这个例子。
我瞬间一个new function c
后,改变值this.i
会直接影响到a.
我该如何解决这个问题??我不知道this.i
对a
的影响。
http://jsbin.com/iPIkomu/1/edit
var a = { c: 1 };
var b = function(){
this.i = a;
this.i.c = 2;
};
var c = function(){
this.i = a;
alert(this.i.c);
};
c.prototype.set = function(){
this.i.c = 4;
alert(a.c);
};
d =new c();
d.set();
使用此
let person1 = { name: 'Vitor', birthYear: 1995 };
// ES6 method
let person2 = Object.assign({}, person1);
如果是ArrayObject
let person1 = [{ name: 'Vitor', birthYear: 1995 },
{ name: 'Mark', birthYear: 1998 }];
// ES6 method
let person2 = Object.assign([], person1);
参考:https://hackernoon.com/javascript-reference-and-copy-variables-b0103074fdf0
对象总是通过引用传递。CCD_ 6和CCD_。
要获得不同的对象,您只需要执行this.i = {c:1};
或类似操作。
我建议更改:
var a = { c: 1 };
to
var a = function() { return { c: 1 }; }
然后是
this.i = a;
to
this.i = a();
做这样的事情,你会确保你总是得到一个新的对象。使用您的代码,您引用的是同一个对象。
由于"a"是一个对象,因此通过将它们等同起来,它将引用传递给"a",从而对两个变量进行更改。你可以使用2种方法中的任何一种-
this.i=JSON.parse(JSON.stringfy(a));
或
this.i=Object.assign({},a);
相关文章:
- 在Javascript中重新分配对象变量时,原始对象会发生什么
- 阻止$scope变量副本侦听其原始副本
- 在 JavaScript 中是否有原始变量的用途
- 两个函数使用相同的变量,都不会覆盖其原始变量
- 在 JavaScript 中访问原始全局变量和属性
- 为什么原始变量的行为类似于对象
- 变量不断重置为其原始值
- 变量在操作新实例后失去原始值
- Javascript变量恢复为原始变量
- 如何在 for 循环中维护迭代变量的原始值,该循环设置事件调用,其中迭代值是函数的一部分
- 为什么Google闭包编译器在原始命名空间为空的情况下向全局命名空间添加变量
- js更改变量会影响到原始变量
- highcharts系列删除功能删除所有原始系列数据(即使存储在新变量中)
- 如何在不影响AngularJS中原始变量的情况下操作视图值
- 在JavaScript中更改局部变量会影响具有不同名称的原始全局变量
- 将Mysql查询结果传递给javascript,然后使用原始变量调用函数
- 附加在字符串中的Javascript变量不会被替换'的原始值
- 什么时候我应该使用变量而不是原始值
- 通过jQuery.fn.data()分配变量将保留对原始标记值的引用
- JavaScript's reverse()总是改变原始变量吗?