JavaScript 继承 - 值未定义

标签 javascript inheritance ecmascript-6

有人可以解释一下为什么如果我调用greet函数,firstName和lastName是未定义的吗? 似乎两者都设置正确,所以我真的不知道出了什么问题。我应该做什么来解决它。

'use strict';

class Person {
    constructor() {
        this.firstName = 'James';
        this.lastName = 'Bond';
    }

    greet() {
        console.log(`Hello ${this.firstname} ${this.lastname}`);
    }
}

class Employee extends Person {
    constructor() {
        super();
        this.salary = 1234;
    }
}

var employee = new Employee();

console.log(employee.firstName); //James
console.log(employee.lastName); //Bond
console.log(employee.salary); //1324

employee.greet(); //Hello undefined undefined

最佳答案

JavaScript 非常区分大小写... firstname != firstName

你想要:

console.log(`Hello ${this.firstName} ${this.lastName}`);
                               ^                ^

关于JavaScript 继承 - 值未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34887319/

相关文章:

javascript - 使用 ES6 编写的 React 组件获取 "cannot read property of undefined"

javascript - 对嵌套的对象数组进行分组

javascript - Webpack:针对 html 和 js 文件不在同一文件夹中的项目的 output.path、publicPath 和 chunkFilename 选择概念

javascript - React 事件处理,最佳实践

ios - 使用委托(delegate)时弹出 ViewController

c++ - 为什么 C++ 编译器不区分同名的继承公共(public)方法和继承私有(private)方法?

cordova - cordova 是否支持 ES6 和/或 Angular2?

javascript - 'require(...)' 是常见的 javascript 模式还是库函数?

python - 如何测试从某个抽象类继承的对象类

javascript - 将范围绑定(bind)到 forEach 循环中的项目