本文实例讲述了jQuery中$原理。分享给大家供大家参考,具体如下:
1、外层沙箱及命名空间$
为了避免声明了一些全局变量而污染,把代码放在一个“沙箱执行”,jQuery具体的实现,都被包含在了一个立即执行函数构造的闭包里面,然后在暴露出命名空间(可以为API,函数,对象),如只暴露 $ 和 jQuery 这2个变量给外界:
jQuery有一个针对压缩优化细节,在代码压缩时,window和undefined都可以压缩为1个字母且确保它们就是window和undefined。外层函数只传了一个参数,因此沙箱执行时,u自然会undefined,把9个字母缩成1个字母,可以看出压缩后的代码减少一些字节数。
2、jQuery 无 new 构造
等价于:
使用jQuery时一般都使用无new的构造方式,直接$('')
进行构造,这也是jQuery十分便捷的一个地方。当使用无new
构造方式时,其本质是相当于new jQuery()
,在jQuery内部的实现方式是:
1) 使用$('xxx')
这种实例化方式,其内部调用的是 return new jQuery.fn.init(selector,rootjQuery)
这一句话,也就是构造实例是交给了 jQuery.fn.init()
方法去完成。
2) 将 jQuery.fn.init
的 属性设置为 jQuery.fn
,那么使用 new jQuery.fn.init()
生成的对象的原型对象就是 jQuery.fn
,所以挂载到 jQuery.fn
上面的函数就相当于挂载到 jQuery.fn.init()
生成的 jQuery 对象上,所有使用 new jQuery.fn.init()
生成的对象也能够访问到 jQuery.fn 上的所有原型方法。
① jQuery.fn.init.prototype = jQuery.fn = jQuery.prototype ;
② new jQuery.fn.init()
相当于 new jQuery() ;
③ jQuery() 返回的是 new jQuery.fn.init()
,而 var obj = new jQuery()
,所以这 2 者是相当的,所以我们可以无 new 实例化 jQuery 对象。
更多关于jQuery相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《用法总结》
希望本文所述对大家jQuery程序设计有所帮助。
原文地址:https://www.jb51.cc/jquery/31033.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。