JS匿名函数介绍

JS匿名函数介绍
1概述。匿名函数

对匿名函数的第一个理解是在jQuery源代码中,首先要看到的是打开jQuery。
复制代码代码如下所示:
功能(窗口,定义.......................){ })(窗口);

这是一个匿名函数,红色是一个参数,而匿名函数的作用创建一个封闭区域,里面的变量和方法不能访问。

因为它不可访问,jQuery怎么被调用这是因为jQuery的匿名函数有两个句子(蓝色单词):
复制代码代码如下所示:
函数(窗口,未定义){

一个本地副本
函数(选择器,上下文){
jQuery对象实际上只是 / init constructor'enhanced
返回新的jquery.fn.init(选择器,上下文);
},



window.jquery =美元= jQuery的窗口;

}(窗口);

在过去,jQuery被传递到匿名函数中的窗口,这就是为什么在参数传递中传递窗口的原因。所以每次调用jQuery实际上就是调用窗口的jQuery对象。

从jQuery调用你自己的方法。外部没有被调用,所以它可以保证安全性并且没有冲突。

2。然后上面的主题,关于jQuery的插件

下面是我编写的分页控件代码的一部分:
复制代码代码如下所示:
(函数($){)

美元。fn.tabing =功能(arg){
实例=新插件(此,精);
};
var实例= null;
函数插件(元素){
这_tabs = $(元);

这_tabli = $(,一个{ href =#}
这个_tabdiv =这。_tabs.siblings()。滤波器(div { ID * = 'tab});
This.init();
}
plugin.prototype = { {
init:函数(){
这个_tabli.addclass(选择);
这个_tabli.eq(0),AddClass(选择);
这_tabdiv.css(显示
这个_tabdiv.eq(0)。Css(显示
这个_tabli.each(函数(){()
$(this)Bind(单击
对于(var i = 0;i <实例。_tabdiv.length;i++){
实例。_tabdiv.eq(我)。Css(显示
}
实例。_tabdiv.filter(# + $(this)。Attr(href)。Split(#){ 1 })。Css(显示
});
})
}
}

}(jQuery);

注意红色单词。实际上,jQuery插件也在编写匿名函数,以确保每个插件的独立性,或者如何将其称为插件。红色字美元。fn.tabing表示有对jQuery的FN在这个插件。

所以外面的jQuery对象可以直接调用管材,这是插件和外部世界之间的唯一联系。

三.jQuery插件在匿名函数和窗口匿名函数中的应用

其实jQuery本身就是一个匿名函数窗口,就是第一点,我们如何编写一个匿名函数的窗口呢

当匿名函数被写入时,函数中有一个带有窗口的接口,如下所示:
复制代码代码如下所示:
(函数(){())
功能getobjbyid(ID){
返回document.getelementbyid(ID);
}
功能__addclass(ID,类名,classvalue){
$(ID)。classvalue classname =风格;
}
addClass = __addclass窗口;
});

同样是红色的话,那么,请()可以在匿名函数调用,但不能调用getobjbyid()。

4。匿名函数也在解析时执行

如下:
复制代码代码如下所示:
函数视频(){ };
函数电影(){ };

无功_video =新的视频();
_video.size = 3;
(_video.tostring =功能){
返回视频;
};
(_video.getname =功能){
返回videoxxx ;
};
无功_movie =新电影();
函数(父、子){
对(母VAR ELE){
如果(子{ } }!)当子项不包含此属性或方法时,父副本将被复制。
子{父};
}
})(_video,_movie); / /匿名函数的调用方式

警报(_movie。大小); / / 3
警报(_movie.tostring()); / / {物}
警报(_movie.getname()); / / videoxxx

三警报具有结果,指示匿名函数的内部执行。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部