关键时刻,一毛钱也能难死英雄汉!编程中有些细节问题也会让你浪费很多时间。


今天看别人的代码的时候,看到了这样一种写法:

var a = function(){......}();

省略号代表部分代码。


开始时我没看明白这事什么意思,经一个js大虾网友点拨后才明白,这只是一种js对象编程的代码简化。

例如:

add = function(){
       return 2+3;
}
var _i = add();

运行后,_i的值是5。你可以把上面的这段代码这样写:

var _i = function(){return 2+3;}();

当方法代参数的情况下呢?

例如:

add = function(a,b){
           return a+b;
}
var _i = add(2,3);


此时_i的值仍然是5。这个时候需要对add函数进行定义后才能使用;可别把代码简化成这样:

var _i = function(2,3){return a+b;}();

呵呵!不过,你可以这样写:

var _i = function(){return add(2,5);}();

或者

var _i = function(){return new Function("return add(2,5);")}()();

但是你实际编程的时候可别这样写,呵呵!

这个时候赋给_i的都是函数运行后的结果。


我们也可以赋给它一个对象,这次我们换一个写法:

var _i = function(){
            return {add:function(a,b){return a+b;}};
}();
alert(_i.add(2,3));

这个时候_i就是一个对象,而add是它的一个函数属性,是这个对象的一部分,_i.add(2,3)的返回值仍然是5。


这种编程表达方式的好处就是声明和定义同步,节省代码量,例如:

var _i = function(){
	return {
		add:function(a,b){return a+b;},
		minus:function(){return _i.add(2,3)-1;}
	};
}();
alert(_i.minus()));

上面程序运行后,弹出返回值4。


有些八卦,不过希望能对你的js编程有所帮助!
评论
wangse 2008-07-04
不错,学习了!
发表评论

您还没有登录,请登录后发表评论

daoger
  • 浏览: 190892 次
  • 性别: Icon_minigender_1
  • 来自: 山东济南
  • 详细资料
搜索本博客
我的相册
Fe9b8bf5-5e8b-35c4-ad80-88fec768d45c-thumb
image007
共 105 张
存档
最新评论