此博客是本人从学生时代开始做笔记所用, 部分是工作所遇问题,做填坑笔记,部分闲来查阅资料,加上自己的理解所总结的学习笔记, 常忙得不可开交,若漏了资料来源,望通知~ 前路漫漫,写点东西告诉自己正在一点点进步,而不要迷失于繁忙。

vue.use解析

vue.use源码:

Vue.use = function (plugin) {
    /*判断插件是否已引入*/
    if (plugin.installed) {
      return
    }
    //倒序为一个数组[]
    var args = toArray(arguments, 1);
   //这里是[Vue] args.unshift(
this); if (typeof plugin.install === 'function') { plugin.install.apply(plugin, args); } else if (typeof plugin === 'function') { plugin.apply(null, args); } plugin.installed = true; return this };

这里再补充说明一下toArray方法

function toArray (list, start) {
  start = start || 0;
  var i = list.length - start;
  var ret = new Array(i);
  while (i--) {
    ret[i] = list[i + start];
  }
  return ret
}

此方法将list倒序输出为一个真正的数组,并将第一个清除(arguments不是真正的数组)

 

因此:

Vue.use本质就是执行一个plugin函数或者执行pluign的install方法进行插件注册,并且向plugin或其install方法传入Vue对象作为第一个参数,use的其他参数作为plugin或install的其他参数。

 

posted @ 2018-01-15 10:08  炎泽  阅读(244)  评论(0编辑  收藏  举报