extend主要用于高级组件开发,开发插件或this.$notiy这样的方式调用组件
有二种方式使用extend
一.extend的两种使用方式
1.方式一 :extend的方式创建组件 Vue.extend(com)
<script>
const com = {
data: {
text: 1
},
mounted() {
console.log('com')
console.log(this.text)
}
}
// extend的使用方式1,js方式创建组件
let comVue = Vue.extend(com)
new comVue({ // 创建组件
el: '#app',
data: {
text: 3
},
mounted() {
console.log('instace')
}
})
</script>
控制台输出:
2.方式一 :extends的方式 extends: 'com'
<body>
<script src=" https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<div id="app">
<com2></com2> // 此处使用了com2组件
</div>
<script>
const com = {
data: {
text: 1
},
mounted() {
console.log('com')
console.log(this.text)
}
}
const com2 = { // 又是一个对象
extends: 'com',
data: {
text: 9
},
mounted() {
console.log('com2')
}
}
new Vue({
el: '#app',
data: {
text: 3
},
components: {
com2: com2
},
mounted() {
console.log('vue')
}
})
</script>
</body>
控制台输出:
区别:
Vue.extend的方式不用调用即可使用,extends的方式需要调用才能使用,我们开发组件的时候就需要衡量
结论:
使用继承后data,computed,事件都被会覆盖, mounted 都会被触发(先触发被继承的,再触发继承后的),prop 需要通过propsData传值