1.Vue.prototype直接挂在 Vue 方法的原型上,通过原型链继承的关系可以在任意一个组件里访问到实例
function myVue(title){
this.title = title
}
myVue.prototype.myUse = '在原型上添加公共属性'
const A = new myVue('我是实例A')
const B = new myVue('我是实例B')
console.log(A.title, B.title, A.myVue, B.myVue, )
// 我是实例A 我是实例B 在原型上添加公共属性 在原型上添加公共属性
如在nuxt.js服务端渲染的vue项目中,引入的插件如果有window,在服务端就不能访问会出现报错,通过Vue.prototype的方法注册,就可以避免报错。
以下情况就要使用Vue.prototype了
(1)不是为了vue写的插件(插件内要处理)不支持Vue.use()加载方式
(2)非vue官方库不支持new Vue()方式
import { jsencrypt } from 'jsencrypt';
Vue.prototype.$jsencrypt = jsencrypt;
2.Vue.use的注册本质上就是执行install方法,每一个vue组件都是Vue的实例,所以组件内this可以拿到Vue.prototype上添加的属性和方法,如果使用Vue.use插件内必须要有install方法
// A.js
let Ainstall = {};
const install = (Vue,options) => {
....
}
Ainstall.install = install;
export default Ainstall;
// main.js
import Aplugin from "A.js"
Vue.use(Aplugin);