为啥想要子类字段,却返回父类字段啊? --<Javascript 学习笔记 5>
Lemon1x 40 0

Javascript 学习笔记 5

JS 是个好东西啊,可惜有些东西太灵活,我把我不住。

就比如今天的这个例子:

class Base {
    name = '父类';

    constructor() {
        console.log(this.name);
    }
}

class Sub {
    name = '子类';
}

new Sub(); // 嗯?竟然返回了“父类”

这是为啥呢?JS 的 this 难道不是由词法环境决定的吗?事实的确如此,this 依然是由此法环境决定的。

实际上,这时初始化 Sub 时,先会初始化父类,也就是 Base,因为构造器默认是super(...args),所以这时的 name 仍然是 父类,当初始化完成之后,才会把子类的方法和属性赋值给 Sub

评论区

索引目录