当前位置:  开发笔记 > 编程语言 > 正文

访问ES6超级属性

如何解决《访问ES6超级属性》经验,为你挑选了1个好方法。

所以当我看到令人惊讶的事情时,我正在搞乱ES6课程:

class Animal {
    constructor(name) {
        this.name = name;
    }
    speak(sound) {
        console.log(sound);
    }
}

class Dog extends Animal {
    constructor(name, age) {
        super(name);
        this.age = age;
    }
    speak() {
        super.speak("Woof! I'm " + super.name + " and am " + this.age);
    }
}

然后,我创造了我的狗:

var mydog = new Dog("mydog",3);
mydog.speak();

现在这个打印

Woof! I'm undefined and am 3

所以我的问题是,为什么super.name未定义?我期待它mydog在这种情况下.



1> Paul..:

this在父构造函数中仍然引用了狗,因此this.name = name,name直接在Dog对象上设置属性,而不是在父对象上.使用this.name将工作:

super.speak("Woof! I'm " + this.name + " and am " + this.age);

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有