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>
相关推荐
LucianaiB7 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
excel7 小时前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
陈随易9 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
子兮曰10 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
IT_陈寒11 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手11 小时前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript
石小石Orz11 小时前
AI 正在蚕食我们的编码能力
前端·后端·算法
陈随易11 小时前
专注飞机 FocusFlight,两个人把番茄钟做成了一趟航班
前端·后端·程序员
总要学点什么12 小时前
第98篇:三维特效-材质线效果——给一条线换十种材质,虚线的图案只填了一半
开发语言·前端·javascript·ecmascript·gis·webgl·材质
10share12 小时前
基于大模型的 i18n 方案:把中文原文当 Key,轻松搞定多语言维护
前端·vue.js