打工的小兵 2021-08-05 16:59 采纳率: 100%
浏览 265
已结题

Vue2.x使用TypeScript写法extends super报错

Super.vue

<script lang="ts">
import Vue from "vue"
import Component from "vue-class-component"

@Component
export default class  extends Vue {
    baseMethod() {
        console.log("I am BaseMethod!");
    }
}
</script>

Test.vue

<template>
    <div class="test">
        hello world
    </div>
</template>

<script lang="ts">
import Component from "vue-class-component"
import Super from "./Super.vue"

@Component
export default class Test extends Super {
    baseMethod() {
        console.log("I am TestMethod!");
        super.baseMethod();
    }
    mounted() {
        this.baseMethod();
    }
}
</script>

只要一运行就会报错:
Test.vue:Cannot read property 'call' of undefined
不能用的话,我怎么调用Super父类的方法呢?

  • 写回答

3条回答 默认 最新

  • 时间就是成长 2021-08-06 10:44
    关注

    原型原型链的底层在ES6语法中是有setPrototypeOf和getPrototypeOf可以通过主关改变原型链去做,下附逻辑

    @Component
    export default class Test extends Super {
        baseMethod() {
            console.log("I am TestMethod!");
            let proto = function T(){}
            const temp = Object.setPrototypeOf(proto.prototype, Super);
            Object.getPrototypeOf(temp).extendOptions.methods.baseMethod.call(this)
        }
        mounted() {
            this.baseMethod();
        }
        static staticMethod() {
            console.log("I am TestStaticMethod!");
            super.staticMethod();
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 已采纳回答 8月6日
  • 赞助了问题酬金 8月5日
  • 修改了问题 8月5日
  • 展开全部

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?