Javascript的奇怪用法

来源:互联网 发布:网络推广访问者 编辑:程序博客网 时间:2024/04/30 08:59

在看AngularJS源码时看到一些Javascript的奇怪写法,先记录下来。

1.

(function(){   window.work=function(){}....})(window)

此法一般在写插件时用,以前在JQuery插件中也见过,意思是声明一个方法,并立即执行它,同时还传入参数window,与下面代码的意思是一样的:

function Controller(w){  this.init=function(){    w.work=function(){     ...    }  }}new Controller(window).init()

2.

new (function(){   this.al=function(){     alert(123);   };})

这是我见过的最奇怪的用法了,相当于声明一个匿名类,并new一个实例出来,它可以调用匿名类中的方法,如下:

(new (function(){   this.al=function(){     alert(123);   };})).al();
或者:

var instance=new (function(){   this.al=function(){     alert(123);   };});instance.al();
在或者:

function Controller(){ this.al=function(){  alert(123); };var instance=new (Controller);instance.al();}
(这种方式可以构建Javascript的DI机制。)

也许Javascript还有其他的奇怪用法,慢慢发现吧。

最后,我只想说:Javascript,你怎么那么调皮呢?

0 0
原创粉丝点击