Javascript 'this' 关键字 在嵌套函数中

Javascript 'this' keyword Inside a Nested Function

本文关键字:函数 嵌套 this Javascript 关键字      更新时间:2023-09-26

这个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 进行测试,而不是在浏览器中)。 请注意,属性 'b' 不能由 'this.b' 创建。

只是想知道构造函数中的嵌套函数中的"这"指的是什么?

由于您直接调用函数(而不是作为对象属性)并且没有new关键字,因此this是默认对象(在Web浏览器中window,在node中global等)。

在jsfiddle上观看现场演示。

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