解决方案 »

  1.   

    那么(function(){}()) 和 (function(){})() 有区别吗
      

  2.   

    这是个人的一种写法,他将面向对象的思想应用到了JavaScript中,通过function形式顶一个类。
      

  3.   

    没有区别
    那我就不清楚了,既然function(){} 是被直接执行了,那么
    (function(){
        B2Ltn =function() { alert("aaa");}
        B2Ltn.prototype.initLtn = function(){alert("vvv");}
        alert(B2Ltn.prototype.initLtn);
    }())
    这个函数中的 B2Ltn 是没有被执行的,那这样写,我就不明白他是怎么调用里面的B2Ltn函数的了
      

  4.   

    源文件是这样的,这个一个网页版的愤怒的小鸟,其中的一个js文件,我有点看不懂其中的原理,来求问
    /*
    * box2d监听器类
    */
    (function(){
        B2Ltn =function()
    {       
    this.ltn = new b2ContactListener();
    this.initLtn();
    }
        B2Ltn.prototype.initLtn = function()
    {
         var self = this;
     this.ltn.BeginContact = function(con){           
      };
      //碰撞后处理
     this.ltn.PostSolve = function(con,imp)
      {             
      //第一只鸟发射前不计
      if(TGame.avaBirdIdx == 0&&TGame.currBird.getState()!="fly")
                  {
      return;
      }
      var v = imp.normalImpulses;
      var ba = con.GetFixtureA().GetBody().GetUserData(),
      bb = con.GetFixtureB().GetBody().GetUserData();
      if(bb==null||ba==null||v[0]<1.0)
      {
      return;
      }
      var tmpSprite = ba;
      //减少血量 
      for(var i=0;i<2;i++)
      {
      //地板不参与计算
      if(tmpSprite=="floor")
      {
    tmpSprite = bb;
    continue;
      }   
      //小鸟不参与计算,小鸟停止运动后死亡 
      if(tmpSprite.constructor.ClassName==="Bird")
          {
    //力量大于4显示碰撞效果  
                        if(v[0]>4)
    {
                           tmpSprite.effColl();
    }
    tmpSprite.isColled = true;
                        tmpSprite = bb;
    continue;   
          }
      if(tmpSprite.isRemovable())
      {
      TGame.removableSprite[tmpSprite.name] = tmpSprite;
      }
      else
      {
      tmpSprite.reduceHP(v[0]);  
      }
      tmpSprite = bb;
      }
      }
    }
    }())
      

  5.   

    没有区别
    那我就不清楚了,既然function(){} 是被直接执行了,那么
    (function(){
        B2Ltn =function() { alert("aaa");}
        B2Ltn.prototype.initLtn = function(){alert("vvv");}
        alert(B2Ltn.prototype.initLtn);
    }())
    这个函数中的 B2Ltn 是没有被执行的,那这样写,我就不明白他是怎么调用里面的B2Ltn函数的了
    B2Ltn没有定义为局部的你可以在外面直接用B2Ltn()