从一个例子说起:

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

JavaScript 引用【转】的更多相关文章

  1. JavaScript引用是如何工作的

    原文链接:https://www.sitepoint.com/how-javascript-references-work/ 摘要:JavaScript中没有指针,并且JavaScript中的引用与我 ...

  2. JavaScript引用方法说明

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 我所犯的JavaScript引用错误

    近期在w3cschool学习JavaScript和php--学完后,开始帮一哥们友情写网站.但是在使用ajax和Jquery的时候发现,我自己写的脚本不能运行.捣鼓了半天,没有发现任何语句错误.调试器 ...

  4. The Cost of JavaScript --------引用

    tl;dr: 想要保持页面的快速运行,你需要仅加载当前页面所需的 JavaScript 代码.优先考虑用户所需,之后运用代码分离懒加载其他内容. Is it happening - 在这个时期,你可以 ...

  5. JavaScript 引用数据类型

    目录 1. 问题描述 2. 原因分析 3. React 中的引用数据类型 4. 业务场景 5. 参考资料 1. 问题描述 今天在写一个代码题时候, 有一个BUG 导致自己停滞好久, 该BUG 可以描述 ...

  6. 前端优化分析 之 javascript引用位置优化

    在很多优化法则中都提到,尽量将javascript放到页面底部,这是为什么呢 我通过firebug进行了下简单的分析 看下图  本页面首尾都存在javascript代码 我们分析得出 1.整个页面文档 ...

  7. javascript引用"bug"带来的"继承"

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. JavaScript 引用错误

    在学习vue时 出现无法实现效果原始设置 <script src="js/lib/vue2.min.js"/><script src="js/lib/v ...

  9. javascript引用奇趣

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

随机推荐

  1. PS学习笔记 1---- 光和色的关系(上)

    在HSB模式中,H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度. HSB模式对应的媒介是人眼.HSB模式中S和B呈现的数值越高,饱和度明度越高,页面色 ...

  2. 170425、centos安装mysql5.6数据库

    # rpm -qa | grep mysql ## 查看该操作系统上是否已经安装了 mysql 数据库, 有的话,可以通过 rpm -e 命令 或者 rpm -e --nodeps 命令来卸载掉 # ...

  3. Yii2 Model的一些常用rules规则,使用Validator验证

    1. Yii2里 model在使用load方法加载浏览器的值的时候,会进行rules验证.这时候可以使用场景,让model对不同场景使用不同验证方式 2. 可以用attributeLabels()来指 ...

  4. Code Forces 21C Stripe 2

    C. Stripe 2 time limit per test 1 second memory limit per test 64 megabytes input standard input out ...

  5. Ubuntu下编译C语言程序(同时给编译生成的文件命名)

    1.创建c文件 test.c touch test.c 2.编写test.c vim test.c #include "stdio.h" int main(){ printf(&q ...

  6. WebSocket之获取HttpSession

    WebSocket之获取HttpSession 由于WebSocket与Http协议的不同,故在使用常用的HttpSession方面就存在了一些问题.通过google翻阅到了在onOpen方法下使用H ...

  7. 使用pinyin4j实现汉字转拼音

    1. maven项目,请在pom.xml里边添加包依赖相关配置: <dependency> <groupId>net.sourceforge.pinyin4j</grou ...

  8. [iOS微博项目 - 4.0] - 自定义微博cell

    github: https://github.com/hellovoidworld/HVWWeibo A.自定义微博cell基本结构 1.需求 创建自定义cell的雏形 cell包含:内容.工具条 内 ...

  9. 对于应用需要记录某个方法耗时的场景,必须使用clock_gettime传入CLOCK_MONOTONIC参数,该参数获得的是自系统开机起单调递增的纳秒级别精度时钟,相比gettimeofday精度提高不少,并且不受NTP等外部服务影响,能准确更准确来统计耗时(java中对应的是System.nanoTime),也就是说所有使用gettimeofday来统计耗时(java中是System.curre

    对于应用需要记录某个方法耗时的场景,必须使用clock_gettime传入CLOCK_MONOTONIC参数,该参数获得的是自系统开机起单调递增的纳秒级别精度时钟,相比gettimeofday精度提高 ...

  10. 数字货币量化分析报告_20170905_P

    [分析时间]2017-09-05 16:36:46 [数据来源]中国比特币 https://www.chbtc.com/ef4101d7dd4f1faf4af825035564dd81聚币网 http ...