我有一个包含es6类的ready()
函数。
我想在函数之外实例化这个类,但是我没有成功地使它工作。
我不想使用return函数,因为该函数可以有多个类。
以下是我想要做的一个例子:
function ready(api) {
class A extends api.C {
contructor() {
this.foo = "bar";
}
}
class B extends A {
contructor() {
this.bar = "foo";
}
}
}
let classA = ready.A; // Here is the problem : I would like to access to the class prototype
原因是我的应用程序有一些使用remi
npm包的插件,我想导出所有插件之间共享的类。
我不知道是否可能,有人有想法吗?
[编辑]:
首先感谢你的所有人,事实上我需要在我的问题上更加准确。
这是真的,我可以通过经典return
返回两个班级。但是,让我解释一下我想要做的事情:
remi
插件加载器。以下是我描述插件的方法:
/**
* This class is a sample plugin
* @class
*/
class Sample {
constructor(api) {
this.api = api;
}
/**
* Shows a test log
*/
test() {
console.log("======> I'm working !");
}
}
function loaded(api) {
let s = new Sample(api);
}
module.exports = (api, options) => {
};
module.exports.attributes = {
loadedCallback: loaded,
name: "sample-plugin",
version: "0.0.0",
category: "misc",
description: "I'm a sample plugin",
classes: [Sample]
};
核心插件管理器将首次加载所有插件,并将所有类原型输出到classes
属性属性中的数组中注册。
然后调用loaded(api)
函数,并通过api.classes
对象实例化类。
在另一个插件中,我可以这样做:
function loaded(api) {
let sample = new api.classes.Sample(api);
}
我可以实例化另一个插件中描述的类。 这就是想法。 但是,我想使用多重继承执行更复杂的API使用,例如:
为了更清楚,我想在全球范围内导出一些类,以获得NPM模块之间的共享访问
答案 0 :(得分:0)
您可以从A
函数返回课程ready
,因此在致电ready
后,您可以访问A
课程
function ready(api) {
class A extends api.C {
contructor() {
this.foo = "bar";
}
}
class B extends A {
contructor() {
this.bar = "foo";
}
}
return {A : A};
}
let classA = ready(api).A;