詳解Vue與VueComponent的關(guān)系
下面這個案例 復(fù)習(xí)我們之前學(xué)過的原型鏈的知識點(diǎn)
// 定義一個構(gòu)造函數(shù)
function Demo() {
this.a = 1
this.b = 2
}
//創(chuàng)建一個Demo實(shí)例對象
const d = new Demo()
console.log(Demo.prototype); //顯示原型屬性
console.log(d.__proto__); //隱式原型屬性
console.log(Demo.prototype === d.__proto__); //true
//程序員通過顯示原型屬性操作原型對象,追加一個x屬性,值為99
Demo.prototype.x = 99
console.log('@',d.__proto__.x);

根據(jù)下面這個組件來分析 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ì)是一個名為VueComponent的構(gòu)造函數(shù),且不是程序員定義的,是Vue.extend生成的
2、我們只需要寫<school/>或<school</school>,vue解析時會幫我們創(chuàng)建school組件的實(shí)例對象;即Vue幫我們執(zhí)行的:new VueComponent(options)
3、特別注意:每次調(diào)用Vue.extend,返回的都是一個全新的VueComponent
4、關(guān)于this指向:
- 組件配置中:
data函數(shù)、methods中的函數(shù)、watch中的函數(shù)、computed中的函數(shù) 它們的this均是VueComponent實(shí)例對象 new Vue(options)配置中:data函數(shù)、methods中的函數(shù)、watch中的函數(shù)、computed中的函數(shù) 它們的this均是 Vue實(shí)例對象
5、VueComponent的實(shí)例對象,以后簡稱vc ---- 組件實(shí)例對象
重點(diǎn)
- 一個重要的內(nèi)置關(guān)系:
VueComponent.prototype._proto_===Vue.prototype - 為什么要有這個關(guān)系:讓組件實(shí)例對象vc可以訪問到Vue原型上的屬性、方法
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
在瀏覽器console中如何調(diào)用vue內(nèi)部方法
這篇文章主要介紹了在瀏覽器console中如何調(diào)用vue內(nèi)部方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
vue使用ElementUI時導(dǎo)航欄默認(rèn)展開功能的實(shí)現(xiàn)
這篇文章主要介紹了vue使用ElementUI時導(dǎo)航欄默認(rèn)展開功能的實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07
vue點(diǎn)擊標(biāo)簽切換選中及互相排斥操作
這篇文章主要介紹了vue點(diǎn)擊標(biāo)簽切換選中及互相排斥操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

