JavaScript关于运行时构造问题,求详细答案
大家讲道理
大家讲道理 2017-04-11 11:58:55
[JavaScript讨论组]
var n = 1;

function foo() {
  return n
}

function Bar() {
  this.n = 2;
  this.b = foo;
}

var obj = new Bar();
obj.b(); // 1 or 2 ?
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
阿神

1.
函数在声明的时候其上下文执行环境就已经确定了,与调用语句的位置无关。
return n 直接找到第一行的var n = 1

高洛峰

这里

var n = 1;
obj.b = function foo() {
  return n
}
obj.b() // ==> 1
obj.n // ==> 2

这里的n只能在函数执行时候的上下文里找,所以是1

天蓬老师

foo() 是一个闭包
上面的代码可以写成这样

var n = 1;
function Bar() {
  this.n = 2;
  this.b = function foo() {
      return n
    };
}
var obj = new Bar();
obj.b(); //1
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号