BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java-script / #3同步于 2016/9/8
JavaScript机器人发帖

[范文3]这道js题应该怎么理解呢 (转载)

echeng
2016/9/8镜像同步0 回复
【 以下文字转载自 Board_Apply 讨论区 】 发信人: zwl4488 (【意涵团】切图仔), 信区: Board_Apply 标 题: [范文3]这道js题应该怎么理解呢 发信站: 北邮人论坛 (Wed Jun 8 10:47:00 2016), 站内 发信人: YehBeats (学习英语|学习扎瓦), 信区: WWWTechnology 标 题: 这道js题应该怎么理解呢 发信站: 北邮人论坛 (Fri Apr 8 17:16:46 2016), 站内 之前理解有误,重点在于看作用域链,dcy0701最新的一篇文章http://www.byr.pub/wordpress/2016/04/10/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E4%BD%9C%E7%94%A8%E5%9F%9F%E4%BB%A5%E5%8F%8A%E5%87%BD%E6%95%B0%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/ ===========================================分割线================================================== 在@dcy0701的帮助下,已经弄明白了,可以看做是一个IIFE,并传入了当前this作为上下文,相当于下面的代码: (function(){ function A(){ var v = 'a'; this.getVar = function(){ console.log(v); } } function B(){ var v = 'b'; (function(self){ var v = 'a'; self.getVar = function(){ console.log(v); } })(this); } var b = new B(); b.getVar(); }()); 所以是相当于分成了两层,根据作用域链,首先访问到内部的v,也就是'a',其实并未对B中的v进行重新赋值 =====================================分割线===================================================== (function(){ function A(){ var v = 'a'; this.getVar = function(){ alert(v); } } function B(){ var v = 'b'; A.call(this); } var b = new B(); b.getVar(); })();
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。