手写建议jQuery并考虑插件和扩展性 发表于 2020-03-02 | 分类于 面试题 | 手写一个简易版的jQuery,并考虑其插件和扩展性。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950class jQuery { constructor(selector) { const result = document.querySelectorAll(selector) const length = result.length for (let i = 0; i < length; i++) { this[i] = result[i] } this.length = length this.selector = selector } get(index) { return this[index] } each(fn) { for (let i = 0; i < this.length; i++) { const elem = this[i] fn(elem) } } on(type, fn) { return this.each(elem => { elem.addEventListener(type, fn, false) }) } // 扩展很多 DOM API}// 插件机制,由原型链实现jQuery.prototype.dialog = function (info) { alert(info)}// 腹泻机制 “造轮子”class myJQuery extends jQuery { constructor(selector) { super(selector) } // 扩展自己的方法 addClass(className) { } style(data) { }}// const $p = new jQuery('p')// $p.get(1)// $p.each((elem) => console.log(elem.nodeName))// $p.on('click', () => alert('clicked'))