JS优秀编码欣赏--插件dayjs 整体方法声明分析

看一下整个构造函数

首先声明Dayjs类,然后调用parse方法,解析日期。这期间,把$d放到this里。

parseDate将date的方法挂载到$d中。包括getFullYear,getMonth等等。之后,$d便成了主方法容器。

init方法中,通过解构拿到$d。这个解构的小技巧,值得借鉴。

后面还跟着例如isSame/isAfter等方法,放在了Dayjs里。

这里其实做了一个分类,内部调用的粒度更小的方法,是在$d中,主要是对时间的一些处理方法。而对外提供的接口方法,粒度相对大一些,主要是 解决具体功能需求,都放在了Dayjs里。这样做一个层级划分,方法就更有层次。

class Dayjs {
    constructor(cfg) {
        this.parse(cfg) // for plugin
    }

    parse(cfg) {
        this.$d = parseDate(cfg.date)
        this.init(cfg)
    }

    init(cfg) {
        const { $d } = this
        this.$y = $d.getFullYear()
        this.$L = this.$L || parseLocale(cfg.locale, null, true) || L
    }

    isSame(that, units) {
        const other = dayjs(that)
        return this.startOf(units) <= other && other <= this.endOf(units)
    }


}

粗旷的看起来,整体结构就是这样的。虽然整体一看简单两句完事了,但是处理的却非常精致,值得学习

随机浏览