詳解Vue與VueComponent的關(guān)系
下面這個(gè)案例 復(fù)習(xí)我們之前學(xué)過(guò)的原型鏈的知識(shí)點(diǎn)
// 定義一個(gè)構(gòu)造函數(shù) function Demo() { this.a = 1 this.b = 2 } //創(chuàng)建一個(gè)Demo實(shí)例對(duì)象 const d = new Demo() console.log(Demo.prototype); //顯示原型屬性 console.log(d.__proto__); //隱式原型屬性 console.log(Demo.prototype === d.__proto__); //true //程序員通過(guò)顯示原型屬性操作原型對(duì)象,追加一個(gè)x屬性,值為99 Demo.prototype.x = 99 console.log('@',d.__proto__.x);
根據(jù)下面這個(gè)組件來(lái)分析 VueComponent
<body> <div id="root"> <school></school> </div> <script> Vue.config.productionTip = false //定義school組件 const school = Vue.extend({ name: 'school', template: ` <div> <h2>學(xué)校名稱:{{name}}</h2> <h2>學(xué)校地址:{{address}}</h2> </div> `, data() { return { name: '尚硅谷', address: '北京' } } }) //創(chuàng)建Vue new Vue({ el:'#root', components:{ school, } }) </script> </body>
1、school組件本質(zhì)是一個(gè)名為VueComponent
的構(gòu)造函數(shù),且不是程序員定義的,是Vue.extend生成的
2、我們只需要寫<school/>或<school</school>,vue解析時(shí)會(huì)幫我們創(chuàng)建school組件的實(shí)例對(duì)象;即Vue幫我們執(zhí)行的:new VueComponent(options)
3、特別注意:每次調(diào)用Vue.extend
,返回的都是一個(gè)全新的VueComponent
4、關(guān)于this指向:
- 組件配置中:
data
函數(shù)、methods
中的函數(shù)、watch
中的函數(shù)、computed
中的函數(shù) 它們的this均是VueComponent
實(shí)例對(duì)象 new Vue(options)
配置中:data
函數(shù)、methods
中的函數(shù)、watch
中的函數(shù)、computed
中的函數(shù) 它們的this均是 Vue實(shí)例對(duì)象
5、VueComponent的實(shí)例對(duì)象,以后簡(jiǎn)稱vc ---- 組件實(shí)例對(duì)象
重點(diǎn)
- 一個(gè)重要的內(nèi)置關(guān)系:
VueComponent.prototype._proto_===Vue.prototype
- 為什么要有這個(gè)關(guān)系:讓組件實(shí)例對(duì)象vc可以訪問(wèn)到Vue原型上的屬性、方法
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
在瀏覽器console中如何調(diào)用vue內(nèi)部方法
這篇文章主要介紹了在瀏覽器console中如何調(diào)用vue內(nèi)部方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07vue中watch監(jiān)聽(tīng)不到變化的解決
本文主要介紹了vue中watch監(jiān)聽(tīng)不到變化的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01vue使用ElementUI時(shí)導(dǎo)航欄默認(rèn)展開(kāi)功能的實(shí)現(xiàn)
這篇文章主要介紹了vue使用ElementUI時(shí)導(dǎo)航欄默認(rèn)展開(kāi)功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-07-07Vue項(xiàng)目打包部署的實(shí)戰(zhàn)過(guò)程記錄
我們使用nginx部署Vue項(xiàng)目,實(shí)質(zhì)上就是將Vue項(xiàng)目打包后的內(nèi)容同步到nginx指向的文件夾,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目打包部署的相關(guān)資料,需要的朋友可以參考下2021-09-09vue點(diǎn)擊標(biāo)簽切換選中及互相排斥操作
這篇文章主要介紹了vue點(diǎn)擊標(biāo)簽切換選中及互相排斥操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07