我们可以参照下载的没有压缩的jQueryj文件,查看Query的基本结构:
(function (window,undefined) {
let jQuery = function () {
return new jQuery.prototype.init();
};
jQuery.prototype = {
constructor: jQuery()
};
jQuery.prototype.init.prototype = jQuery.prototype;
window.jQuery = window.$ = jQuery;
})(window)
jQuery实质是一个闭包,防止和其他框架冲突,window参数是为了方便后期压缩代码,提升代码查找速率,undefined是也为了后期压索代码,还有再ie9一下浏览器中undefined是可以被修改的,防止被外部修改而定义的。
jQuery的基本结构和js的面向对象极其相似,就可以把它当做面向对象的原生js看,很好就定义一个自己的框架:
(function (window,undefined) {
let njQuery = function () {
return new njQuery.prototype.init();
};
njQuery.prototype = {
constructor: njQuery()
};
njQuery.prototype.init.prototype = njQuery.prototype;
window.jQuery = window.$ = njQuery;
})(window)