gpt4 book ai didi

node.js - 这在扩展类中未定义

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:25 24 4
gpt4 key购买 nike

我有这 3 个文件:

bar.js

class Bar {
test(p) {
console.log(p);
}
}

module.exports = Bar;

baz.js

const Bar = require('./bar');

class Baz extends Bar {
test2(p) {
this.test(p);
}
}

module.exports = Baz;

foo.js

const Baz = require('./baz');
const { test2 } = new Baz();

test2('test');

当我将 'test' 传递给 new Baz.test2() 时,我希望它将它传递给它的父类(super class) (this.test(p) ),它应该在其中记录'test'。但是,它引发了错误:

        this.test(p);
^

TypeError: Cannot read property 'test' of undefined

我做错了什么?为什么 this 未定义,我认为它应该引用类本身?

最佳答案

test2 与原始上下文(Bar 实例)分开使用,并且应绑定(bind)到正确的 this

从名称上无法判断它是否是设计上的回调。如果是的话,可以将其绑定(bind)在构造函数中:

class Bar {
constructor () {
this.test = this.test.bind(this);
}
...
}

否则可以就地绑定(bind):

const test2 = new Baz().test2.bind(this);

test2('test');

或者只是不要脱离上下文单独使用:

const baz = new Baz()

baz.test2('test');

关于node.js - 这在扩展类中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53652226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com