Javascript var o={x:function(){},y:function(){}}封装方式的加载后即执行的方法。
2011-11-23 14:43 Garland 阅读(172) 评论(0) 收藏 举报最近再看一些javasciprt的封装,var o={x:function(){},y:function(){}}的这种封装方式很常用,有点像json,这种封装只是定义了方法的集合,如果想做一些模块化的东西时,加载后就马上执行初始化方法,就有点不方便,开始试了在v后加括号var o={x:function(){}()}的方式,确实可以加载后马上执行,可是如果手动调用o.x(),就会提示o.x()的方法不存在。不过现在找到了解决办法。
var util = {
init: function () {
alert("init");
var fn = arguments.callee;
return function () { fn(); };
} (),
hi: function () {
alert("hi");
}
};
//util.init();
util这个变量在加载后,就会马上执行init()方法,第一次在执行init()的时候会取得arguments.callee,当前调用方法的一个引用再赋值给fn变值,闭包返回匿名方法执行fn()赋值给init,这样,加载的时候,可以自动执行init(),也可以手动调用util.init()。
浙公网安备 33010602011771号