为什么不能通过Javascript中的自调用函数动态创建变量?

Rei*_*Rei 2 html javascript jquery

我试图像其他编程语言一样模仿某种构造函数.如果我这样做它不起作用.:/抱歉愚蠢!:/ 谢谢您的帮助!!

  function foo(){

      this.makeVar = function(){this.newVar = 'hello world'}(); 

  }

 var test = new foo();
 alert(test.newVar); 
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 7

因为您直接调用(匿名)函数,而不是作为对象的方法.所以thiswindow.

this外部函数的值复制到内部函数仍然可用的变量.

function foo(){
  var self = this;
  this.makeVar = function(){
    self.newVar = 'hello world';
  }(); 
}
Run Code Online (Sandbox Code Playgroud)