关于js里面对象赋值的有关问题
关于js里面对象赋值的问题
两次输出的结果是一样的,请问是什么原因???
------解决思路----------------------
var obj2 = obj1 ; 这里把obj1对象指向了obj2对象
------解决思路----------------------
对象是引用传递的,直接赋值是让两个变量指向同一个对象的地址
------解决思路----------------------
首先变量的值分为原始类型和引用类型 ,原始类型就是值保存在本地 你的变量声明的是对象很明显是引用类型,在内存中obj1和obj2 保存的只是一个相同的地址 这个地址指向等号后面的对象 相当于obj1,2指的同一个事物。
你将这个值改变后 obj1 2还是指向它输出必然一致
如果想输出不通很简单 改变其中一个变量的引用 如下
var a=b={n:1}
a={n:2}
console.log(a)//{n:2}
console.log(b)//{n:1}
ab本来指向同一引用,我将a指向新对象 b仍然指向老对象 输出自然不同了
function test() {
var obj1 = {id:1,name:''} ;
var obj2 = obj1 ;
obj2.id = 2 ;
alert(obj2.id) ;
alert(obj1.id) ;
}
两次输出的结果是一样的,请问是什么原因???
------解决思路----------------------
var obj2 = obj1 ; 这里把obj1对象指向了obj2对象
------解决思路----------------------
对象是引用传递的,直接赋值是让两个变量指向同一个对象的地址
------解决思路----------------------
首先变量的值分为原始类型和引用类型 ,原始类型就是值保存在本地 你的变量声明的是对象很明显是引用类型,在内存中obj1和obj2 保存的只是一个相同的地址 这个地址指向等号后面的对象 相当于obj1,2指的同一个事物。
你将这个值改变后 obj1 2还是指向它输出必然一致
如果想输出不通很简单 改变其中一个变量的引用 如下
var a=b={n:1}
a={n:2}
console.log(a)//{n:2}
console.log(b)//{n:1}
ab本来指向同一引用,我将a指向新对象 b仍然指向老对象 输出自然不同了