一、jQuery源码(1)------ 2020-04-05
2020-04-05 本文已影响0人
自己写了自己看
1、jQuery实现的原理:
(function (global, factory) {
// 支持commonJS规范的走这里
if (typeof module === "object" && typeof module.exports === "object") {
} else { // 这里可以理解为浏览器环境
factory(global);
}
})(typeof window !== "undefined" ? window : this, function (window, noGlobal) {
var version = "3.4.1",
jQuery = function (selector, context) {
return new jQuery.fn.init(selector, context);
},
/**
* jQuery.prototype 是把jQuery当做构造函数使用
* jQuery.fn 此时jQuery是一个对象
* 把jQuery的原型赋给jQuery的fn属性
*/
jQuery.fn = jQuery.prototype = {
}
// 把jQuery.fn.init这个函数赋值给init
var init = jQuery.fn.init = function (selector, context, root) {};
/**
* 把jQuery.fn.init的原型指向了jQuery,所以,
* jQuery.fn.init的实例调取的也是jQuery原型上的方法
* 因此,jquery.fn.init的实例在功能上和jQuery是相同的,
* 所以可以认为是jQuery的实例
*/
init.prototype = jQuery.fn;
if (!noGlobal) {
window.jQuery = window.$ = jQuery;
}
});
/**
* 为什么创建jQuery实例时,不直接return new jQuery();
* 因为会陷入死递归
*/
jQuery = function (selector, context) {
return new jquery();
}