从一个例子说起:

var m ={a:’a’, b:’b’};

var n=m;

n.c=’c’;

那么在这个时候 , m.c 也会变成 ’c’!

这个问题在我最开始学习 JS 语言时个人一直处于概念迷惑不清的状态

其实道理很简单,就像两个人共同拥有一片花园。

如果其中一个人把一种新品种的花引进了花园。

那么另外一个人就可以对别人说:我的花园有了这种新花。

或则 如果其中一个人把花园里的某个品种的花全部撤出了花园。

那么另外一个人就只能承认他的花园没有那种花。

这个比喻虽然非常不全面甚至很业余。却至少说明了一个问题。两个不同的引用是可以全等的,是互相影响的。他们指向一个地址。

但是如果

var m ={a:’a’, b:’b’};

var n=m;

var n ={a:’a’, b:’b’};

n.c=’c’;

情况就完全变了,相当与其中一个人宣布不要了那个花园,已经不控制花园了,他选择了别的花园,或则是菜地等等其他 .. 。 n.c=’c’; 就相当于他搬了一盆花到了新花园里。及时和另一个人的花园样子一模一样,但是也不影响另外那个人的花园。

现有脚本如下:

var r=document.getElementById("t");

r.onclick=function(){

alert(r)

}

r=null;

直到刚刚我还对于以上代码心存疙瘩,心里想: t 都已经是 null 了;那么它的属性还有什么意思(应该也成 null了)。当点击时又怎么会执行函数?!

其实在以上代码里, document.getElementById("t") 就是那个比很多人共同拥有的花园,确切地说,应该是具体的页面上某个 ID 等于 ”t” 的元素。( DIV.. 或 INPUT 等等)。

r 就是花园的拥有人之一,某天,它在花园里放了一盆新花,(让 ID 等于 ”t” 的元素多了一个属性 onclik ,作用是在点击的时候会执行函数 … ),接着他又放弃了这座花园。他什么都不拥有。如果 代码是 “ r=10 ” , 那么他就变身成了一个数字。

但是那个花园还在。他加进去的花还在,当人么进来观赏时,还可以看到那朵后来加进去的话(人们点击页面上某个 ID 等于 ”t” 的元素时,函数会执行)。

http://caii.iteye.com/blog/372784

最新文章

  1. Qt中新建类构造函数的初始化参数列表
  2. iOS菜单滚动联动内容区域功能实现
  3. Paths on a Grid(简单组合数学)
  4. WCF架构日记-1
  5. 30种oracle常见的等待事件说明
  6. mybatis(1):入坑篇
  7. Spring mvc 学习笔记
  8. [Canvas] Introduction to drawing with p5js
  9. 算法入门经典大赛 Dynamic Programming
  10. Akari谜题(关灯问题)的开灯解法
  11. android的PackageManagerService详解
  12. pycharm的一些快捷键
  13. MySQL 内置函数
  14. Boolean类型在EF和MySql中的映射关系
  15. Mybatis核心配置文件SqlMapConfig.xml
  16. RabbitMQ简单应用の订阅模式
  17. 吴裕雄 python深度学习与实践(8)
  18. C# wave mp3 播放器探寻
  19. ElasticSearch 2 (36) - 信息聚合系列之显著项
  20. Git直接拉取远程分支

热门文章

  1. java框架---->RxJava的使用(一)
  2. hammer.js移动端手势库
  3. 构建API
  4. 【BZOJ3572】[Hnoi2014]世界树 虚树
  5. js 中导出excel 较长数字串会变成科学计数法(转载)
  6. 170309、MySQL存储引擎MyISAM与InnoDB区别总结整理
  7. hibernate中持久化对象的状态
  8. web安全之xss攻击
  9. 安装和使用PhantomJS
  10. The Highest Mark---hdu5501(问题转化 01背包)