DayJs源码(五)Dayjs插件

2021-05-17  本文已影响0人  小q

在DayJS中存在许多方法需要结合插件使用的例子。在DayJS中是怎样实现插件功能呢?

首先,dayJS注册插件方法在index.js

dayjs.extend = (plugin, option) => {
  if (!plugin.$i) { // install plugin only once
    plugin(option, Dayjs, dayjs)
    plugin.$i = true
  }
  return dayjs
}

首先extend方法支持传递两个参数,分别是插件本身和插件参数。函数里面将调用插件,同时传入三个参数,分别是插件参数,Dayjs类和dayjs函数。

咱们直接找一个插件看看里面的实现方法。存放插件的贷方就在plugin文件夹中
以dayOfyear插件为例,此方法返回一个number,表示Dayjs的年份,或者设置年份的日期。源码如下:

export default (o, c) => {
  const proto = c.prototype
  proto.dayOfYear = function (input) {
    const dayOfYear = Math.round((this.startOf('day') - this.startOf('year')) / 864e5) + 1
    return input == null ? dayOfYear : this.add(input - dayOfYear, 'day')
  }
}
上一篇下一篇

猜你喜欢

热点阅读