整体架构
调用方式:
$(document).find('a').css('color','red')
近似实现:
window.onload = function(){ var aQuery = function(){ // return aQuery.prototype.init(); return new aQuery.prototype.init() } aQuery.prototype = { init: function(){ this.age1 = 18; return this; }, name: function(){ return this.age }, age: 20, age1: 21 } aQuery.prototype.init.prototype = aQuery.prototype; //...执行 // var a = new aQuery(); var a = aQuery().age1, b = aQuery().name(); console.log(a, b) }
涉及知识点:this调用方式,prtotype,return.
可见,此算法基本解决了$()是返回一个对象的难题,在aQuery.prototype对象里面依次添加相关操作方法就可以了。若要链式调用,只需让相关操作方法返回一个this即可。
参考资源:jQuery源码分析系列