- 
            
            对象的构建: - 采用原型式的结构,使用构造函数,这样的好处节省了内存空间,性能上得到了优化 - 但是ajQuery类这个结构与目标jQuery的结构的还是有很大不一致:没有采用new操作符;return返回的是一个通过new出来的的对象。 查看全部
- 
            
            jQuery多库共存处理: 1、引入jquery时,jQuery内部先将当前window对象上的jQuery和$记录下来 var _jQuery = window.jQuery, _$ = window.$; 2、引入jquery后,jQuery占领了window对象上的jQuery和$ 3、手动执行$.noConflict()函数,重新让出jQuery和$,还原到占领之前的情况 jQuery.noConflict = function( deep ) { if ( window.$ === jQuery ) { window.$ = _$; } if ( deep && window.jQuery === jQuery ) { window.jQuery = _jQuery; } return jQuery; }; }查看全部
- 
            
            jQuery中ready与load事件: - ready先执行,load后执行 - ready在页面DOM构造完成后执行,无需等待图片等外部文件的加载 - load在页面加载完毕后才执行 - 网页中有图片时,ready先执行;网页无图片时,load先执行,因为ready异步? DOMContentLoaded与load - DOMContentLoaded 事件的触发时机为:HTML解析为DOM之后触发,无需等- 待样式表、图像和子框架的完成加载。 - load 意思就是:当一个资源及其依赖资源已完成加载时,将触发 load 事件 - 简而言之,二者触发时间的区别在于:DOMContentLoaded 在 HTML 文档本解析之后触发,而 load 是在 HTML 所有相关资源被加载完成后触发 查看全部
- 
            
            无new构建原理:检测参数类型,并将强制转换为jquery对象 const jquery = function(selector){ if(!(selector instanceof jquery)){ return new jquery(selector); } let elem = document.querySelector(selector[0]); this[0] = elem; this.length = 1; this.context = document; this.selector = selector[0]; return this }查看全部
- 
            
            使用立即执行函数解决命名空间与变量污染的问题 (function(global){ global.jquery = function(){...} })(window)查看全部
- 
            
            jQuery的核心理念,简洁的API、优雅的链式、强大的查询与便捷的操作 查看全部
- 
            
            2、简单模拟 function aDeferred(){ var arr = []; return { then: function(fn){ arr.push(fn); return this; }, resolve: function(args){ var returned; arr.forEach(function(fn, i){ var o = returned || args; returned = fn(o); }) } } }查看全部
- 
            
            1、使用$.Deferred var dfd = $.Deferred() dfd.then(function(preVale){ return 2 * preVale; }).then(function(preVale){ return 3 * preVale; }).then(function(preVale){ console.log("使用$.Deferred代码结果:"+preVale); }); dfd.resolve(2);查看全部
- 
            
            1、 $.data() eg: var ele1 = $("#aaron"); $.data(ele1, 'a', '111' );2、 $(ele).data() 1)设置值 eg: var ele1 = $("#aaron"); ele1.data('a', '111'); 2)获取值 eg: var ele1 = $("#aaron"); ele1.data('a');查看全部
- 
            
            function fn1(val){ console.log('fn1 says ' + val); } var callbacks = $.Callbacks("unique"); callbacks.add(fn1); callbacks.add(fn1); callbacks.add(fn1); callbacks.fire("foo"); 结果: fn1 says foofunction Callbacks(options){ var list = [], self, var firingStart, memory; function _fire(data){ memory = options === 'memory' && data; firingIndex = firingStart || 0; firingStart = 0; firingLength = list.length; for(; list && firingIndex < firingLength; firingIndex++ ){ list[firingIndex](data) } } self = { add:function(fn){ var start = list.length; if(options == 'unique'){ if(-1 === list.indexOf(fn)){ list.push(fn); } } else { list.push(fn); } if(memory){ firingStart = start; // 获取最后一个值 _fire(memory); } }, fire: function(args){ if(list){ _fire(args); } } } return self; }查看全部
- 
            
            function fn1(val) { console.log("fn1 says " + val); } var cbs = $.Callbacks('once'); cbs.add(fn1); cbs.fire('foo'); cbs.fire('foo');function Callbacks(options) { list = [], self; self = { add: function(fn) { list.push(fn) }, fire: function(args) { if(list){ list.forEach(function(fn){ fn(args); }); if(options==='once'){ list = undefined; } } } } return self; }查看全部
- 
            
            默认回调对象设计 function fn1(val){ console.log("fn1 says:"+val); } function fn2(val){ console.log("fn2 says:"+val); } var cbs = $.Callbacks(); cbs.add(fn1); cbs.fire("foo"); console.log("............................"); cbs.add(fn2); cbs.fire("bar");模拟代码 function Callbacks(){ var list = [], self; self = { add: function(fn){ list.push(fn) }, fire: function(args){ list.forEach(function(fn){ fn(args); }) } } return self; } function fn1(val){ console.log("fn1 says:"+val); } function fn2(val){ console.log("fn2 says:"+val); } var cbs = Callbacks(); cbs.add(fn1); cbs.fire("foo"); cbs.add(fn2); cbs.fire("bar")查看全部
- 
            
            function f1(value){ alert(value); } function f2(value){ alert("fn2 says:" + value); return false; } var callbacks = $.Callbacks(); callbacks.add(f1); callbacks.fire("foo!"); callbacks.add(f2); callbacks.fire("bar!");查看全部
- 
            
            var callbacks = $.Callbacks(); callbacks,add(function(){ alert(1); }) callbacks.add(function(){ alert(2); }); callbacks.fire();查看全部
- 
            
            var $$ = ajQuery = function(selector) { retrun new ajQuery.fn.init(selector); } ajQuery.fn = ajQuery.prototype = { naem: 'aaron', init: function(selector) { this.selector = selector; return this; }, constructor: ajQuery } ajQuery.fn.init.prototype = ajQuery.fn;查看全部
举报
 
             
         
                