jquery 프레임워크 봉인 및 해석 원리 + 자체 구축 jquery 프레임워크 + 주석
25012 단어 전단 학습 노트
<script>
// jq ,
(function (window) {
// , , ,
var arr = [];
var push = arr.push;
var splice = arr.splice;
var slice = arr.slice;
// jQuery Sizzle ,
function Sizzle(seletcor) {
return document.querySelectorAll(seletcor);
}
// jq
function jQuery(selector) {
// jq F , init ( ) jq ( ), F
// jq
return new jQuery.fn.init(selector);
}
// , jq , jq jQuery.fn, jQuery.prototype == jQuery.fn
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
//
init: function (selector) {
// dom , dom , this
// splice , this
splice.call(this,0,this.length);
// push, dom , this
push.apply(this,Sizzle(selector));
// , 。
// : 、 ,this ,return this
// 、 , this,return this 。
return this;
},
// jq css , dom
css: function (styleName, styleValue) {
for (var i = 0; i < this.length; i++) {
var ele = this[i];
ele.style[styleName] = styleValue;
}
//
return this;
}
};
//jq extend jq , jQuery jQuery.prototype
//entend :
/*
* jquery , extend 。
*
* jQuery.extend({
* each:function(){},
* type:function(){},
* isString:function(){}
* });
*
* jQuery jQuery
* jQuery dom jQuery.prototype
*
* */
/*
* jq extend :
*
*
* jQuery.extend(); , jQuery
* jQuery.extend(); , 2,3,4 ,
*
* jQuery.fn.extend(): , jQuery.fn
* jQuery.fn.extend(): , 2,3,4 ,
*
* */
jQuery.fn.extend = jQuery.extend = function () {
var target, sources;
var arg0 = arguments[0];
if (arg0.length == 0) return this;
if (arguments.length == 1) {
target = this;
sources = [arg0];
} else {
target = arg0;
sources = slice.call(arguments, 1);
}
for (var i = 0; i < sources.length; i++) {
var source = sources[i];
for (var key in source) {
target[key] = source[key];
}
}
return target;
}
// init jquery , , init ,
// jq
jQuery.fn.init.prototype = jQuery.fn;
// , jq
window.jQuery = window.$ = jQuery;
})(window);
script>