Javascript'this'关键字在嵌套函数内部

时间:2012-06-20 12:52:05

标签: javascript constructor this nested-function

此Javascript代码在嵌套函数(嵌套在构造函数中)中使用'this'关键字:

o=new MyCtor();
for (var p in o) {
  print(p);
  print(o[p]);
}
function MyCtor() {
  this.a=1;
  var instance=this;
  nested();
  function nested() {
    this.b=2;
    instance.c=3;
  }
}

结果如下:

a
1
c
3

注意print()只是将输出转储到屏幕上,就像浏览器中的alert()一样(我使用独立的Spidermonkey进行测试,而不是在浏览器中进行测试)。请注意,'this.b'无法创建属性'b'。

只是想知道构造函数中嵌套函数中的'this'是什么?

2 个答案:

答案 0 :(得分:2)

由于您直接调用该函数(而不是作为对象属性)且没有new关键字,this是Web浏览器中的默认对象window,{{1在节点等)。

查看live demo on jsfiddle

答案 1 :(得分:0)

它指的是窗口。通过运行这个小提琴并打开控制台来看看自己:http://jsfiddle.net/sveinatle/9brLj/