第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

關(guān)于Vue.prototype 和vue.use()的疑問

關(guān)于Vue.prototype 和vue.use()的疑問

犯罪嫌疑人X 2019-03-12 17:14:19
vue新手,經(jīng)常在main.js中看到 Vue.prototype.$xxx = xxx;和使用vue.use()api.js我在學(xué)習(xí)使用的過程中,都實(shí)現(xiàn)了數(shù)據(jù)調(diào)用想知道這兩者的區(qū)別
查看完整描述

1 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

首先,不管你采用哪種方式,最終實(shí)現(xiàn)的調(diào)用方式都是


vm.api()

也就是說,兩種方法,實(shí)現(xiàn)的原理都是在Vue.prototype上添加了一個(gè)方法。所以結(jié)論是“沒有區(qū)別”。


再來說說Vue.use()到底干了什么。


我們知道,Vue.use()可以讓我們安裝一個(gè)自定義的Vue插件。為此,我們需要聲明一個(gè)install函數(shù)


// 創(chuàng)建一個(gè)簡單的插件 say.js

var install = function(Vue) {

  if (install.installed) return // 如果已經(jīng)注冊過了,就跳過

  install.installed = true


  Object.defineProperties(Vue.prototype, {

    $say: {

      value: function() {console.log('I am a plugin')}

    }

  })

}

module.exports = install

然后我們要注冊這個(gè)插件


import say from './say.js'

import Vue from 'vue'


Vue.use(say)

這樣,在每個(gè)Vue的實(shí)例里我們都能調(diào)用say方法了。


我們來看Vue.use方法內(nèi)部是怎么實(shí)現(xiàn)的


Vue.use = function (plugin) {

  if (plugin.installed) {

    return;

  }

  // additional parameters

  var 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;

};

其實(shí)也就是調(diào)用了這個(gè)install方法而已。


查看完整回答
反對 回復(fù) 2019-03-15
  • 1 回答
  • 0 關(guān)注
  • 694 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號