JavaScript 引用【转】
从一个例子说起:
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 引用【转】的更多相关文章
- JavaScript引用是如何工作的
原文链接:https://www.sitepoint.com/how-javascript-references-work/ 摘要:JavaScript中没有指针,并且JavaScript中的引用与我 ...
- JavaScript引用方法说明
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 我所犯的JavaScript引用错误
近期在w3cschool学习JavaScript和php--学完后,开始帮一哥们友情写网站.但是在使用ajax和Jquery的时候发现,我自己写的脚本不能运行.捣鼓了半天,没有发现任何语句错误.调试器 ...
- The Cost of JavaScript --------引用
tl;dr: 想要保持页面的快速运行,你需要仅加载当前页面所需的 JavaScript 代码.优先考虑用户所需,之后运用代码分离懒加载其他内容. Is it happening - 在这个时期,你可以 ...
- JavaScript 引用数据类型
目录 1. 问题描述 2. 原因分析 3. React 中的引用数据类型 4. 业务场景 5. 参考资料 1. 问题描述 今天在写一个代码题时候, 有一个BUG 导致自己停滞好久, 该BUG 可以描述 ...
- 前端优化分析 之 javascript引用位置优化
在很多优化法则中都提到,尽量将javascript放到页面底部,这是为什么呢 我通过firebug进行了下简单的分析 看下图 本页面首尾都存在javascript代码 我们分析得出 1.整个页面文档 ...
- javascript引用"bug"带来的"继承"
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- JavaScript 引用错误
在学习vue时 出现无法实现效果原始设置 <script src="js/lib/vue2.min.js"/><script src="js/lib/v ...
- javascript引用奇趣
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
随机推荐
- [素数个数模板] HDU 5901 Count primes
#include<cstdio> #include<cmath> using namespace std; #define LL long long ; bool np[N]; ...
- 170323、Spring 事物机制总结
spring两种事物处理机制,一是声明式事物,二是编程式事物 声明式事物 1)Spring的声明式事务管理在底层是建立在AOP的基础之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加 ...
- 160512、nginx+多个tomcat集群+session共享(windows版)
第一步:下载nginx的windows版本,解压即可使用,点击nginx.exe启动nginx 或cmd命令 1.启动: D:\nginx+tomcat\nginx-1.9.3>start ng ...
- 160317(一)、在非action中获取request
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes() ...
- angular中的子路由用法
Angular ui-route的用法 引入angular和使用angular子路由时需要的依赖模块angular-ui-route.js.并且在html中将路由要插入的位置写上.而在js部分中和an ...
- Windows7 x64系统下安装Nodejs并在WebStorm下搭建编译less环境
1. 打开Nodejs官网http://www.nodejs.org/,点“DOWNLOADS”,点64-bit下载“node-v0.10.33-x64.msi”. 2. 下载好后,双击“node-v ...
- Codeforces Round #513-ABCD
ABC现场做出,涨了八十几分吧.D有点思路不知道怎么实现,赛后看题解发现巨简单,想得太复杂了.蓝瘦. A----http://codeforces.com/contest/1060/problem/A ...
- Android /system/build.prop 文件
# begin build properties (开始设置系统性能) # autogenerated by buildinfo.sh (通过设置形成系统信息) ro.build.id=GRI40 ( ...
- Should You Build Your Own Backtester?
By Michael Halls-Moore on August 2nd, 2016 This post relates to a talk I gave in April at QuantCon 2 ...
- 类的super
我们经常在类的继承当中使用super(), 来调用父类中的方法.例如下面: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 class A: def func(self): ...