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
三警报具有结果,指示匿名函数的内部执行。