首页 > 解决方案 > 'this' 在类方法中未定义

问题描述

这有效:

class C {
    constructor(p1, p2) {
        this.p1 = 0;
        this.p2 = [];
        this.setP1(p1);
        p2.forEach(p => this.addP2(p));
    }
    setP1(p) { this.p1 = p }
    addP2(p) { this.p2.push(p) }
}

let c = new C(10,[20]);
console.log(c);
C { p1: 10, p2: [ 20 ] }

但这不会:

class C {
    constructor(p1, p2) {
        this.p1 = 0;
        this.p2 = [];
        this.setP1(p1);
        p2.forEach(this.addP2); // <- changed here
    }
    setP1(p) { this.p1 = p }
    addP2(p) { this.p2.push(p) }
}

let c = new C(10,[20]);
console.log(c);
addP2(p) { this.p2.push(p) }
                ^ TypeError: Cannot read property 'p2' of undefined

还有两件事我不明白:

标签: javascriptclassecmascript-6

解决方案


推荐阅读