大家好!
相信各位都有看到標題了,今天開始就要實作函式庫了。
我們進入今天的主題吧!
很久之前,jQuery 因為簡單的寫法和方便的功能而大受歡迎。
但是,對於人們更加重視自我需求的現在,jQuery 卻是載入網頁的絆腳石,原因是當時方便的功能,現在的瀏覽器都能實現了,甚至網頁通常都只會使用到 jQuery 的其中幾個功能而已。
自己的需求只有自己知道,我們何不量身打造一個終身受用的函式庫呢?
首先,為了讓建立的新物件都有共用方法,必須使用建構式:
const Felix = function (selector) {
/* 不使用 new 運算子也能直接呼叫建構式 */
if (!(this instanceof Felix)) return new Felix(selector);
if (!selector) return;
/* 如果 selector 為字串,視為選擇器;
反之,則視為物件(window 或 document) */
selector = typeof selector === 'string' ?
document.querySelectorAll(selector) :
[selector];
/* 將查詢到的元素寫入物件 */
selector.forEach(function (v, i) {
this[i] = v;
}.bind(this));
this.length = selector.length;
};
試試建立一個新物件:
var body = new Felix('body');
console.log(body, typeof body); // Log: { 0: body, length: 1 }, 'object'
沒錯,這就是我們要的結果,使用 CSS 選擇器查詢網頁元素,並回傳一個新物件。
這樣就完成第一個函式了!
差不多也到尾聲了,接下來我們要打造的是函式庫的共用方法。
如果對文章有任何疑問,也歡迎在下方提問和建議!
我是 Felix,我們明天再見!