各位知道jquery,這個JS的函式庫提供我們非常多實用的方法,包裝好給我們用。
其中底層邏輯都還是跑不出js原生的概念,
今天就讓我們用原生JS的類來創造一些Jquery幫我們打包好的方法吧!
來掀開它的奧秘底牌。
假設我們要創造一個叫做Dquery的東西,該怎麼做呢:
class Dquery {
constructor(selector) {
this.elements = document.querySelectorAll(selector);
//噴出DOM來
}
css(property, value) {
for (let i = 0; i < this.elements.length; i++) {
this.elements[i].style[property] = value;
}
return this;
//修改style
}
addClass(className) {
for (let i = 0; i < this.elements.length; i++) {
this.elements[i].classList.add(className);
}
return this;
//增加class
}
removeClass(className) {
for (let i = 0; i < this.elements.length; i++) {
this.elements[i].classList.remove(className);
}
return this;
}
on(eventType, callback) {
for (let i = 0; i < this.elements.length; i++) {
this.elements[i].addEventListener(eventType, callback);
}
return this;
//監聽事件的運作
}
html(htmlString) {
if (typeof htmlString === 'undefined') {
return this.elements[0].innerHTML;
} else {
for (let i = 0; i < this.elements.length; i++) {
this.elements[i].innerHTML = htmlString;
}
return this;
}
}
}
function $(selector) {
return new Dquery(selector);
}
其實概念就是先把底層邏輯刷過一遍 最後return this
就達成jquery的效果了唷。
Jquery曾經非常流行,儘管後來式微了,卻還是有一批死忠的粉絲鍾愛著它的簡便,
事實上它就是JS,所以討人喜歡也是正常的,
這次學會了用ES6類的概念,會讓我們在前端的功力大幅提升唷!!
請繼續關注,
跟著我們這個系列繼續動手玩創意!!未來還有更多更新鮮的花招呢(。◕∀◕。)