手动实现jquery2

仔细看了看,上次的jquery源码不太对,jquery的作者并不是这样写的,原谅我的不仔细。这样写的话如果获取到dom元素后,在加$().css,等方法时,会造成一个极大的内存浪费。源码是这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
(function(global){

function jQuery(selector){
return new jQuery.fn.init(selector);
}

jQuery.fn = jQuery.prototype = {
constructor:jQuery,

init:function(selector){
if(jQuery.type(selector)==="string"){ //选择器

const elements = document.querySelectorAll(selector)

for(let i = 0;i<elements.length;i++){
this[i] = elements[i];
}
this.length=elements.length;

}else if( selector.nodeType ){ //DOM元素

this[0] = selector;
this.length = 1;

}

}
}
jQuery.fn.init.prototype = jQuery.fn;
global.$ = global.jQuery = jQuery;
})(window)

分享