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

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

2015/12/14 - 对象赋值问题 与 IE8hack的相关文章

2015/12/22--window对象

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title>window对象</title> <script type="text/javascript"> //显示对话框 function disp_alert(){ alert("我是一个消息框"); } //显示带

2015.12.14 宏定义 枚举 动态内存分配

宏定义 (#define) 宏定义的意义和用途:(习惯上,都是“k”开头) 1.为了让一些数据有意义. 2.类似于内联函数(使用简便). 3.输出日志的开关. (非零即真,0为“发布阶段”,1为“开发阶段”) 枚举 (enum) 枚举类型声明为一组相关的符号常数定义了一个类型名称.枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定. 默认情况下,枚举中每个元素的基础类型是 int.可以使用冒号指定另一种整数值类型.默认是从0开始,后者会在前者之上+1. 动态内

2015/12/14 Python网络编程,TCP/IP客户端和服务器初探

一直不是很清楚服务器的定义,对于什么是服务器/客户端架构也只有一个模糊的感觉.最近开始学习,才明白一些什么服务器和客户端的关系. 所谓的服务器,就是提供服务的东西,它是一个硬件或者软件,可以向一个或者多个客户端提供所需要的服务.它存在的目的就是等待客户的请求,然后给客户服务,再接着等待请求. 而客户端,就来连上一个服务器,提出自己的请求,然后等待获得反馈. 比如说,打印机就是一个服务器的例子,与之相连的计算机就是客户端,通过网络连接打印机后,给它提出服务需求(打印)和传输数据(传输内容),然后打

2015/12/9--window对象

<html> <head> <script> var w = window.innerWidth; document.documentElement.clientWidth; document.body.clientWidth;//显示出浏览器的宽度 var h = window.clientHeight; document.documentElement.clientHeight; document.body.clientHeight;//显示出浏览器的高度 /*01

Daily Scrumming* 2015.12.14(Day 6)

一.团队scrum meeting照片 二.今日总结 姓名 WorkItem ID 工作内容 签入链接以及备注说明  江昊 徐丞  王开      王若愚 任务 1038 继续实现第一个页面 无签入  王春阳    付帅    杨墨犁       三.明日计划 姓名 WorkItem ID 工作目标 备注(没有写无)  江昊    无  徐丞      王若愚 1038 完成第一个页面 无  王开  请假  王春阳 请假      付帅 请假      杨墨犁  实现第一个页面 四.燃尽图 五.

2015/12/15--Document对象

<html> <head> <script type = "text/javascript"> //使用document.write()输出流写文本 document.write("hello,world!"); //使用document.write()输出流写HTML document.write("<h1>welcome to my world!</h1>"); </scrip

2015.12.14 MDI(多文档窗口结构)设置基本解决,折腾一天,部分解决存在已久的问题。但效果仍不如临时航线的MDI窗体结构。

创建从一个窗口弹出多个子窗口的结构叫MDI窗体结构 如果不按MDI结构管理,最简单的做法是: 在窗体A上添加菜单或按钮,在菜单或按钮事件中添加弹出B窗体代码: B b = new B(); b.show() 这样A与B没有任何关系,有多少个弹出窗口任务栏上就有多少个图标,父窗口最小化时其余窗口没有任何变化.这样比较凌乱. 但好处是弹出窗口的位置和大小与父窗口没有约束关系,弹出窗口可以在父窗口之外显示. 稍改进的方法(可能是比下方改进MDI还好的方法) B b = new B(); b.show(

C风格字符串和C++ string 对象赋值操作的性能比较

<<C++ Primer>> 第四版 Exercise Section 4.3.1 部分Exercise 4.2.9 习题如下: 在自己本机执行如下程序,记录程序执行时间: 1 #include "stdafx.h" 2 #include <iostream> 3 #include <string> 4 #include <vector> 5 #include <ctime> 6 7 using namespace

Hadoop自测题及参考答案(持续更新中--2015.6.14)

单选题 1.与其他几项不同的是 A. Mesos B. Mongodb C. Corona D. Borg E. YARN 注:其他几项都是资源统一管理系统或者资源统一调度系统,而 Mongodb一种非关系型数据库. 2.[java基础] 以下不属于线程安全的数据结构是 A. HashMap B. HashTable C. CopyOnWriteArrayList D. ConcurrentHashMap 3.hadoop2.x采用什么技术构建源代码 A. ant B. ivy C. maven