废话少说,先上代码:
简单测试一把:
知识点:
面向对象基础,我用的是es5的,完全可以使用ES6的 class 来实现。
怎么在类的原型上扩展方法。
通过return this 实现链式调用。
使用闭包,防止全局污染。然后对外暴露访问的入口。
类似jQuery对外提供$方法的,我们在$方法中实例化类。
arguments的使用,注意会有和this一样的指向问题。
ES6 ... 语法的使用。可以将nodeList快速转成数组。
类的原型里面记得要重新指向一下 constructor为当前的类。
插件的扩展完全可以放在闭包里面,形成保护,因为对外的方法是挂载到了类的对象elements上面了,这个已经对外有暴露。
写在最后:
通过现象看本质,以上的实现只是一个最最基础的JQuery了,真正的jquery,比这个复杂得多 。希望我的这个简单的JQ,能让大家对jquery内部原理有一个更深层次的认识。
如果你发现有以上什么不对的,请一定要告诉我,反正我也不会改。VX公众号:itmlgb,你值得拥有。
领取专属 10元无门槛券
私享最新 技术干货