链式风格
先看一个元素的操作
window.jQuery = function (selector) {
const elements = document.querySelectorAll(selector);
// api 可以操作elements
const api = {
// 闭包: 函数访问外部的变量
addClass(className) {
for (let i = 0; i < elements.length; i++) {
elements[i].classList.add(className);
}
return this;
},
};
return api
};
const api = jQuery('.test') //不返回元素们,返回 api 对象
api.addClass('red').addClass('blue')// api 调用 addClass 之后,返回值还是api;所以可以连续调用
优化代码
window.jQuery = function (selector) {
const elements = document.querySelectorAll(selector);
// api 可以操作elements
return {
// 闭包: 函数访问外部的变量
addClass(className) {
for (let i = 0; i < elements.length; i++) {
elements[i].classList.add(className);
}
return this;
},
};
};
jQuery('.test').addClass('red').addClass('blue')// 优化后