简述jq的实现原理
1. 沙箱:
- jq利用自执行函数,将所有的实现细节封装在自执行函数内,对外仅仅暴露jQuery和$符号:
(function(w, u) {
"use strict";
w.jQuery = w.$ = jQuery;
var a;
if (a == u)
return;
})(window);
2. 无new化
- 在jq中我们使用选择器,是直接使用$(selector)的,但是其实他返回的是一个jq对象,其中挂载了很多jq方法。
(function(window, undefined){
jQuery = function(selector, context){
return new jQuery.fn.init(selector, context);
},
jQuery.fn = jQuery.prototype = {
init: function(selector, context, rootjQuery){
// ...
}
},
jQuery.fn.init.prototype = jQuery.fn;
})(window);
当我们传入一个选择器时,会返回new jQuery.fn.init(selector, context);而当我们传入空选择器时,在init中会