热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深入解析jQuery架构设计与实现原理

本文深入剖析了jQuery的架构设计与实现原理。jQuery的总体结构采用了一个自执行匿名函数的形式,该函数接收`window`和`undefined`作为参数,并在内部定义了一个局部的jQuery副本,以确保其内部变量和方法不会污染全局命名空间。这种设计不仅提高了代码的封装性和安全性,还使得jQuery能够更好地与其他JavaScript库兼容。通过详细分析这一架构,读者可以更好地理解jQuery的核心机制及其高效运行的原理。

jQuery脚本总体结构来说,有如下形式:

(function( window, undefined ) {
// Define a local copy of jQueryvar jQuery = function( selector, context
) { // The jQuery object is
actually just the init constructor
'enhanced' return new
jQuery.fn.init( selector, context ); },// Expose jQuery to the global objectwindow.jQuery =
window.$ = jQuery;
})(window);


对这样的结构不很理解,也没做深究,只知道和和所谓的

Technorati 标签: JQuery,Javascript,Web前端
js闭包的概念相关,今天查了一些资料,有了些基本的理解。

实际是定义了一个全局函数,前一个括号为一个匿名函数,后面为函数的调用。可以这样理解:

var fun=function(window, undefined){
... ...
}fun(window);


如http://streamlet77.javaeye.com/blog/914305的解释可以比较好的说明:

整个脚本是一个匿名函数(暂时叫它mainFn吧),函数被加载的时候便开始执行,mainFn可以接收两个参数,执行时只传递一个参数window.

   1. 具体解释下这个写法的意思:
   2.   window     函数执行时会传入window,这个传入的window是全局对象(通常为Window)的
   3.              一个属性且window=this,而传入mainFn函数中作为其参数时,它会被存储在
   4.              mainFn的调用对象中.在原型链中查找变量的策略是(非嵌套函数):先查找调用
   5.              对象,再查找全局对象,所以这使得整个mainFn中使用的window时查找效率更高
   6.   undefined  由于执行时并未传递第二个参数,故变量undefined的值为undefined.早期版
   7.              本的浏览器中全局对象可能没有undefined属性,所以不能直接使用它.通常避免
   8.              这个问题的写法是 window.undefined = window.undefined 

 

然后在最后让jQuery库中最重要的对象jQuery成为了window对象的一个属性,并可以简写为“$”。


转载于:https://www.cnblogs.com/lazeman/archive/2011/03/05/1971884.html


推荐阅读
author-avatar
mobiledu2502889883
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有