0

我期待obj是F1的实例('this.prop'中的'this'指的是下面代码片段中的F1对象,同样我认为C1的'return this'中的'this'指的是F1,但事实并非如此.它是指Global Window对象),但实际上它是一个Window的实例。这是为什么 ?你能解释一下吗?

function F1() {
  this.prop = 5;
  function C1() {
   return this;
  }
  return C1();
}
var obj = new F1();
4

1 回答 1

1

如果您只是创建 的实例F1,那么只需执行以下操作:

function F1() {
  this.prop = 5;
}
var obj = new F1();

你不需要返回任何东西。


this里面和外面C1不一样this。如果您想保留this外部以便C1可以使用它,请将其存储到另一个变量中

function F1() {

    //preserve "this" from outside 
    var that = this;

    this.prop = 5;

    function C1() {
       return that; //"that" is "this" of the outside
    }
}
于 2012-04-21T02:07:58.060 回答