属性返回undefined

时间:2016-07-12 13:50:18

标签: javascript node.js ecmascript-6

当我在范围外创建原型但引用它时,我无法访问nome属性。

'use strict';

function Cachorro(nome) {
    this.nome = nome;

    this.late = () => {
        console.log(`${this.nome}: Au au au!`);
    }
};

Cachorro.prototype.morde = () => {
    console.log(`${this.nome}: #mordendo`);
}

const dolly = new Cachorro("Dolly");


dolly.late()
dolly.morde()

1 个答案:

答案 0 :(得分:3)

原因是ES6箭头函数始终继承父作用域的this。因此,您不希望将它们用于原型函数,因为this是获取该对象实例属性的唯一方法。

所以转换一下:

Cachorro.prototype.morde = () => {
    console.log(`${this.nome}: #mordendo`);
}

为:

Cachorro.prototype.morde = function() {
    console.log(`${this.nome}: #mordendo`);
}