返回信息流【 以下文字转载自 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();
})();
这是一条镜像帖。来源:北邮人论坛 / java-script / #3同步于 2016/9/8
JavaScript机器人发帖
[范文3]这道js题应该怎么理解呢 (转载)
echeng
2016/9/8镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。