今天在工作中发现以前没有注意到地方,那就是如果将一个对象通过赋值运算符"="赋值给另一个变量或对象时,那么作为接收值的变量或对象中保存的并不是这个对象的值或数据,而只是保存指向这个对象的this指针而已。
例如:
var x = {‘a‘:1} var y = x; // 变量y中保存的并不是对象x的内容,而是一个this指针,其源头任然是对象x
所以这样,一旦我们对变量y的内容进行了更改,那么作为源头的x对象也将发生变化。
1 var x = {‘a‘:1} 2 var y = x; 3 y.a=2 => x.a==2
如果想让变量y可以保存对象x的内容,并且在更改操作变量y的时候,又不会对对象x进行改变,那么只能对对象进行拷贝了!
var copyObject = function(obj){ var result = {}; for(var x in obj){ result[x] = typeof obj==="object" ? copyObject(obj[x]) : obj[x] } return result; }
------------------------------------------------ 华丽的分割线---------------------------------------------
除了以上的收获外,还解决了一个IE8的CSS Hack问题。
1 .ie8{ 2 background:red\9; 3 /*ie6 - 8; 第一中方案 : 此种方案常用在CSS样式表中书写*/ 4 5 background:red\\9; 6 /*ie6 - 8; 第二中方案 : 此种方案可以用在内嵌样式时*/ 7 8 background:red\0; 9 /* IE8 - edge 支持 */ 10 }
时间: 2024-10-27 13:09:36