码迷,mamicode.com
首页 > 其他好文 > 详细

2015/12/14 - 对象赋值问题 与 IE8hack

时间:2015-12-15 00:48:20      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

今天在工作中发现以前没有注意到地方,那就是如果将一个对象通过赋值运算符"="赋值给另一个变量或对象时,那么作为接收值的变量或对象中保存的并不是这个对象的值或数据,而只是保存指向这个对象的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 }

 

2015/12/14 - 对象赋值问题 与 IE8hack

标签:

原文地址:http://www.cnblogs.com/HCJJ/p/5046913.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!