Vue-31、Vue与Vuecomponent的关系

1、代码

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>一个重要的内置关系</title>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script type="text/javascript" src="./js/dayjs.min.js"></script>
    <style>
    </style>
</head>
<body>
    <!--
    1、一个重要的内置关系:VueComponent.prototype._proto_===Vue.prototype
    2、为什么要有这个关系:让组件实例对象(vc)可以访问到Vue原型上的属性、方法。
    -->
<div id="root">

</div>
<script type="text/javascript">
    Vue.config.productionTip = false;
    //第一步创建school组件
    const school = Vue.extend({
        //el:'#root'   //一定不要写el 配置项,因为最终所有的组件都要被一个vm 管理,由vm决定服务于那个容器。
        template: `
          <div>
                <h2>学校名称:{{schoolName}}</h2>
                <h2>学校地址:{{address}}</h2>
                <hr>
          </div>
        `,
        data() {
            return {
                schoolName: '清华大学',
                address: '北京',
            }
        },
    });

    new Vue({
        el: "#root",
        data:{
            msg:'你好'
        }
    });


    console.log(school.prototype.__proto__);
    console.log(Vue.prototype);

    console.log(school.prototype.__proto__ === Vue.prototype);
</script>
</body>
</html>
  • 一个重要的内置关系:VueComponent.prototype.proto===Vue.prototype
  • 为什么要有这个关系:让组件实例对象(vc)可以访问到Vue原型上的属性、方法。

2、关系图

验证 VueComponent.prototype.proto===Vue.prototype

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>一个重要的内置关系</title>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script type="text/javascript" src="./js/dayjs.min.js"></script>
    <style>
    </style>
</head>
<body>
    <!--
    1、一个重要的内置关系:VueComponent.prototype._proto_===Vue.prototype
    2、为什么要有这个关系:让组件实例对象(vc)可以访问到Vue原型上的属性、方法。
    -->
<div id="root">
    <school></school>
</div>
<script type="text/javascript">
    Vue.config.productionTip = false;
    Vue.prototype.x=99;
    //第一步创建school组件
    const school = Vue.extend({
        //el:'#root'   //一定不要写el 配置项,因为最终所有的组件都要被一个vm 管理,由vm决定服务于那个容器。
        template: `
          <div>
                <h2>学校名称:{{schoolName}}</h2>
                <h2>学校地址:{{address}}</h2>
                <hr>
                <button @click="showX"> 点我输出x</button>
          </div>
        `,
        data() {
            return {
                schoolName: '清华大学',
                address: '北京',
            }
        },
        methods:{
            showX(){
                console.log(this.x)
            }
        }
    });

    new Vue({
        el: "#root",
        data:{
            msg:'你好'
        },
        components:{
            school
        }
    });
    console.log(school.prototype.__proto__);
    console.log(Vue.prototype);
    console.log(school.prototype.__proto__ === Vue.prototype);
</script>
</body>
</html>
相关推荐
爱喝白开水a5 分钟前
前端AI自动化测试:brower-use调研让大模型帮你做网页交互与测试
前端·人工智能·大模型·prompt·交互·agent·rag
Never_Satisfied5 分钟前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
董世昌416 分钟前
深度解析ES6 Set与Map:相同点、核心差异及实战选型
前端·javascript·es6
B站_计算机毕业设计之家19 分钟前
豆瓣电影数据采集分析推荐系统 | Python Vue Flask框架 LSTM Echarts多技术融合开发 毕业设计源码 计算机
vue.js·python·机器学习·flask·echarts·lstm·推荐算法
WeiXiao_Hyy1 小时前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
吃杠碰小鸡1 小时前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone1 小时前
C#使用Aspose.Words把 word转成图片
前端·c#·word
xjt_09012 小时前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农2 小时前
Vue 2.3
前端·javascript·vue.js
夜郎king2 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落