导入后将参数传递给 class 构造函数

Pass arguments to the class constructor after import

这是我的parent.class.js

class ParentClass {
    constructor() {
    }
}

module.exports = { ParentClass };

child.class.js

const { ParentClass } = require('./parent.class');

class ChildClass extends ParentClass {
    constructor(index) {
        super();
        this.index = index;
    }

    showIndex() {
        console.log(this.index)
    }
}

module.exports = { ChildClass };

index.js 我使用的是 child class

const ChildClass = require('./child.class');

ChildClass(1).showIndex(); // This obviously is not working 

注意:这只是一个示例。在实际项目中我无法使用 ES6 模块 import

我的问题是如何将参数传递给 index.js 中的 child class 实例?

如果是 ES6,我可以这样做:

import ChildClass  from './child.class.js'

const ChildClass = new ChildClass(1)

ChildClass.showIndex(); // outputs 1 ...I guess??


如何将参数传递给 childclass?

问题是

module.exports = { ChildClass };

const ChildClass = require('./child.class');

您正在导出一个 对象 ,其中有一个 属性 的 ChildClass,然后您正在导入整个 object 并尝试调用它。但是对象是不可调用的;你指的不是 ChildClass class.

就像你用

解构了ParentClass一样
const { ParentClass } = require('./parent.class');

要么解构ChildClass:

const { ChildClass } = require('./child.class');

或将ChildClass分配给module.exports

module.exports = ChildClass;

然后您将能够创建 ChildClass 的实例并调用该实例的方法:

const child = new ChildClass(1);
child.showIndex();