JS 16 - jQuery 太重了,何不选择需要的功能就好?

大家好!

相信各位都有看到标题了,今天开始就要实作函式库了。
我们进入今天的主题吧!


jQuery

很久之前,jQuery 因为简单的写法和方便的功能而大受欢迎。
但是,对於人们更加重视自我需求的现在,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,我们明天再见!


<<:  Day16 React-Router(一)基本路由

>>:  Day19 - 使用Django进行自动化测试 (1)

Day 6 基本型别 - part 3

好的,接下来就来介绍剩下的型别~分别是 Union、Aliases、Literal。 Union 型...

管理 Deployments

Canary Deployments 当要使用一部分用户测试生产中的新部署时,请使用 Canary ...

Ruby解题分享-Maximum Subarray

这题反正就是要more and more... Maximum Subarray 题目连结:http...

[Flutter ] Free fake API 为资料库,以 FutureBuilder + http 抓取

程序版本: Flutter 2.2.1 使用JSONPlaceholder为 Free fake A...

数据分析的好夥伴 - Python基础:物件导向(下)

前面我们有说过,在Python的世界中,万物皆物件。但物件只是这个世界的最小单位而已,接下来让我们认...