2012-06-08 20 views
4

这里有两个函数。Javascript中的自调用函数

1)用'新'对象创建。

(
    function se(){ 
    var a=10; 

    var t = function(){ 
     var that=this; 
     alert(a); 
     that.book= function(){ 
      alert(that); 
     } 
     that.book(); 
    } 
    return new t(); 
    }() 
); 

2)使用对象字面方式

(
    function se(){ 
     var a=10; 
     var f={ 
      init:function(){ 
       alert(a); 
      } 
     }     
     f.init(); 
    }() 
); 

那么什么是用最好的做法是什么?为什么?在第一个例子中使用'this'的目的是什么?

+0

函数不是自调用,这意味着递归 – Esailija

+0

@Esailija:你可以说'se'函数在这里是自调用的。 – haylem

+1

最佳做法既不是选项。两者都创建一个没有存储在任何地方的对象,因此最终效果是显示两个警报(第一个选项)或单个警报(第二个选项)。 @haylem:他们不是自我调用 - 函数体不递归调用函数。他们“立即调用函数表达式”。 – nnnnnn

回答

1

这里有很多事情有点混乱。

你可能想在读了起来:

  • 倒闭,
  • 作用域在JavaScript中,
  • 和基于原型的继承。