gpt4 book ai didi

typescript - 为什么抽象方法实现里面的this.propertyName引用错误?

转载 作者:搜寻专家 更新时间:2023-10-30 21:04:46 24 4
gpt4 key购买 nike

为什么在下面的代码中我在抽象方法实现中的 this.name 引用有误?

abstract class Abstract {
protected name: string;

constructor () {
this.abstractMethod();
}

protected abstract abstractMethod (): void;
}

class Concrete extends Abstract {
protected name: string = 'Concrete';

protected abstractMethod () {
console.log(this, this.name); // Concrete, undefined
}
}

new Concrete();

Link on example

最佳答案

查看编译后的 JavaScript 在这种情况下会有所帮助:

function Concrete() {
_super.apply(this, arguments); // calls this.abstractMethod()
this.name = 'Concrete';
}

赋值直到 super 调用之后才发生——调用 Abstract 的构造函数——所以此时 this.abstractMethod 被调用 this.nameundefined

关于typescript - 为什么抽象方法实现里面的this.propertyName引用错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36284177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com