谁能告诉我,js方法长成这样是什么意思。。。

来人哥哥 2014-11-27 01:08:26
<script type="text/javascript">
(function(){
B2Ltn =function()
{
alert("aaa");
}
B2Ltn.prototype.initLtn = function()
{
alert("vvv");
}
alert(B2Ltn.prototype.initLtn);
}())
</script>
...全文
212 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
slwsss 2014-11-27
  • 打赏
  • 举报
回复
引用 4 楼 lairengege 的回复:
那么(function(){}()) 和 (function(){})() 有区别吗
没有区别
来人哥哥 2014-11-27
  • 打赏
  • 举报
回复
那么(function(){}()) 和 (function(){})() 有区别吗
似梦飞花 2014-11-27
  • 打赏
  • 举报
回复
即时执行的匿名函数 原型
hailinger14 2014-11-27
  • 打赏
  • 举报
回复
JS语言示弱类型语言 怎么写的都有 各种奇形怪状
slwsss 2014-11-27
  • 打赏
  • 举报
回复
定义匿名函数并且立即执行
来人哥哥 2014-11-27
  • 打赏
  • 举报
回复
引用 9 楼 slwsss 的回复:
B2Ltn没有定义为局部的你可以在外面直接用B2Ltn()
谢谢你,我js学的太浅了,我回头查查局部变量和全局变量的用法去。
slwsss 2014-11-27
  • 打赏
  • 举报
回复
引用 7 楼 lairengege 的回复:
[quote=引用 5 楼 slwsss 的回复:] [quote=引用 4 楼 lairengege 的回复:] 那么(function(){}()) 和 (function(){})() 有区别吗
没有区别[/quote] 那我就不清楚了,既然function(){} 是被直接执行了,那么 (function(){ B2Ltn =function() { alert("aaa");} B2Ltn.prototype.initLtn = function(){alert("vvv");} alert(B2Ltn.prototype.initLtn); }()) 这个函数中的 B2Ltn 是没有被执行的,那这样写,我就不明白他是怎么调用里面的B2Ltn函数的了[/quote] B2Ltn没有定义为局部的你可以在外面直接用B2Ltn()
来人哥哥 2014-11-27
  • 打赏
  • 举报
回复
源文件是这样的,这个一个网页版的愤怒的小鸟,其中的一个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;
			  }			
		  }
	}
}())
来人哥哥 2014-11-27
  • 打赏
  • 举报
回复
引用 5 楼 slwsss 的回复:
[quote=引用 4 楼 lairengege 的回复:] 那么(function(){}()) 和 (function(){})() 有区别吗
没有区别[/quote] 那我就不清楚了,既然function(){} 是被直接执行了,那么 (function(){ B2Ltn =function() { alert("aaa");} B2Ltn.prototype.initLtn = function(){alert("vvv");} alert(B2Ltn.prototype.initLtn); }()) 这个函数中的 B2Ltn 是没有被执行的,那这样写,我就不明白他是怎么调用里面的B2Ltn函数的了
白狼水 2014-11-27
  • 打赏
  • 举报
回复
这是个人的一种写法,他将面向对象的思想应用到了JavaScript中,通过function形式顶一个类。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧