Js继承了类实例undefined

时间:2016-07-16 09:20:53

标签: javascript node.js oop

我有一个扩展另一个类的类。但是在父类中定义的一个函数试图引用"这个",抛出一个异常,说明"这个"未定义。以下是相关代码:

class Entity {
    constructor() {
        this.axes = ['x', 'y'];
        ...

    updatePosition() {
        this.axes.forEach(function(axis) {
            this.position[axis] += this.velocity[axis];
        });
    }
}

class Player extends Entity {
    constructor() {
        super();
        ....
    }
...
}

var player = new Player();

抛出的错误:

.../player.js:25
            this.position[axis] += this.velocity[axis];
                ^

TypeError: Cannot read property 'position' of undefined

您知道为什么实例未定义,我该如何解决? 谢谢!

1 个答案:

答案 0 :(得分:1)

forEach函数this的上下文中,全局对象不是播放器实例。由于您使用的是ES6,您可以通过更改为箭头功能来解决它​​:

updatePosition() {
    this.axes.forEach((axis) => {
        this.position[axis] += this.velocity[axis];
    });
}

在这里阅读更多内容,在“lexical this”下:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions