重写vue源码:Vue.use的实现

Vue.use的功能分析:Vue.use是用来加载插件用的,第一个参数是插件,第二个参数和往后参数都是是插件的自定义配置对象。加载插件,就是去执行plugin或者plugin身上的install方法。
Vue.use的实现

Vue.myUse = function(plugin) {
	// 防止重复加载
	const _installedPlugins = this._installedPlugins || (this._installedPlugins = [])
	const index = _installedPlugins.indexOf(plugin)
	if(index !== -1) {
		return this // 加载过的直接return
	} 
	// 用于获取配置参数,从下标为1的开始截取成数组
	const args = Array.prototype.slice.call(arguments, 1)
	// 把当前的this传进去,因为plugin和plugin.install的第一个默认参数是Vue,第二个往后是默认参数
	args.unshift(this)
	if(typeof plugin.install === 'function') { // 判断plugin.install是否为函数,是就执行
	// 把this指向改好。它是plugin下的install方法
		plugin.install.call(plugin, args) 
	}  else if(typeof plugin === 'function') { // 判断plugin是否为函数,是就执行
	// 由于plugin就是一个方法,不用指定this。
		plugin.call(null, args)
	}
	_installedPlugins.push(plugin)
	return this
}

_installedPlugins: 用于记录已经安装过的插件,防止重复加载。
args: 用于存储传递给plugin或者plugin.install的参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值