gpt4 book ai didi

javascript - .在类中调用实用函数以将实例化类的引用放入实例变量中

转载 作者:行者123 更新时间:2023-11-30 14:15:52 24 4
gpt4 key购买 nike

我想调用一个带有类上下文的实用函数来从导入的对象(在调用类中)实例化一个对象:

import { setSharedInstances } = require("./utilities");
import TestService = require("./TestService");

class Test {
constructor() {
this.services = {};
}

getServices() {
setSharedInstances.call(this, TestService);
}
}

我的实用程序函数如下所示:

module.exports = {
setSharedInstances: (...ServiceClasses) =>
ServiceClasses.map(ServiceClass =>
!this.services[ServiceClass.name] && (this.services[ServiceClass.name] = new ServiceClass()))
};

我导出的 TestService 如下所示:

class TestService {
constructor() {
this.gotInstantiated = true;
}
}

但是当我执行这段代码时

const test = new Test();
test.getServices();
console.log(test.services.TestService.gotInstanciated); //expected to be true

我收到这个错误:

TypeError: Cannot read property 'Test' of undefined in utilities

我的理解是,对于 .call,setSharedInstances 将作用于在 Test 类的构造函数中声明的服务变量。谁能告诉我我在这里缺少什么?

最佳答案

箭头函数捕获this。在您的实用程序中,如果您打算推迟 this 的解析以等到函数被调用,然后将最上面的一个切换到经典的 function

setSharedInstances: function (...ServiceClasses) {
...
}

关于javascript - .在类中调用实用函数以将实例化类的引用放入实例变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53573409/

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