HoSalt
2015-12-23 17:00
对象用引用去比较而不是用值中“引用”是什么意思?
对象比较是指该命名下,他们对内存中存储数据的比较;
举个例子吧,直接声明一个对象和构造一个对象,可能值是一样的,但是内存中的数据肯定是不同的,原型也不同;因此是不同的。
两个声明对象比较的话,对内存中的数据也是两套,比较也是不同的。
你把这个比较理解为“是否同一个”而不是“是否相同”
创建对象的时候,会先开辟一个内存空间,然后用一个变量指向这个内存空间,实际上这个变量的值是这个内存空间的引用,可以理解成一个地址,比如说:var a = {}; b = a; 那么a 和 b 引用的是同一个地址,因为{}的内存空间是同一个,所以你对a或者b进行数据修改,同时会影响两个的值,因为你实际上修改的是{}的值,本体都变了,引用当然会变,现在知道你问的引用时什么意思了吗,引用就是这个内存的地址
再说个具体的,比如说:成都市成华区双林路1号,这个地址是唯一的,你用无数个变量去接收这个地址,其实他就是同一个东西,当你修改其中一个变量,实际就是修改了这个唯一的东西,其他的变量值也就变了。
引申一下,所以为了避免这种情况,会用到克隆方法,至于怎么用,可以问度娘
JavaScript深入浅出
281102 学习 · 1020 问题
相似问题