我正在阅读vuejs源代码,并对这两行代码感到困惑:
const args = toArray(arguments, 1)
args.unshift(this)
在下面的代码片段中,为什么还要这样做?
/* @flow */
import { toArray } from '../util/index'
export function initUse (Vue: GlobalAPI) {
Vue.use = function (plugin: Function | Object) {
/* istanbul ignore if */
if (plugin.installed) {
return
}
// additional parameters
const args = toArray(arguments, 1)
args.unshift(this)
if (typeof plugin.install === 'function') {
plugin.install.apply(plugin, args)
} else {
plugin.apply(null, args)
}
plugin.installed = true
return this
}
}
答案 0 :(得分:0)
由于您位于Vue
实例内,所涉及的行位于Vue.use
上定义的函数中,这很可能会引用当前的Vue实例。
你必须浏览toArray
的来源以理解第一行,它可能需要参数并从中返回一个数组,并且可能减去第一个参数(toArray(arguments, 1)
中的1)我这个印象,但要确保浏览该功能的来源)。
但是当调用args.unshift(this)
到来时,它将Vue
实例作为args array
的第一个元素,然后用于为plugin
函数提供参数
希望有所帮助; - )
的Seb