Javascript 有没有一种方法可以在已经存在的构造函数中拥有一个构造函数?
我有以下充当基本构造函数的函数:Javascript 有没有一种方法可以在已经存在的构造函数中拥有一个构造函数?,javascript,oop,Javascript,Oop,我有以下充当基本构造函数的函数: function Foo() = {} ... exports Foo 它是一个空构造函数,被我不想更改的其他函数使用。此外,Foo仅从文件中导出 现在我需要在Foo中创建一个不同的构造函数 以下是我将enum作为一个独立构造函数所拥有的内容。但是我如何使它成为Foo的一部分呢 function enum(data) { this.data = data } enum.prototype.getVal() { return this.data; }
function Foo() = {}
...
exports Foo
它是一个空构造函数,被我不想更改的其他函数使用。此外,Foo
仅从文件中导出
现在我需要在Foo
中创建一个不同的构造函数
以下是我将enum
作为一个独立构造函数所拥有的内容。但是我如何使它成为Foo
的一部分呢
function enum(data) {
this.data = data
}
enum.prototype.getVal() { return this.data; }
var obj = new enum(5);
obj.getVal();
从你的通讯网里猜一猜 从文件中导出并不是真正的问题。如果您只是使用
Foo
作为名称空间来“挂起”函数,您可以这样做:
Enum.js
// all constructors should be capitalized
function Enum() { }
Enum.prototype.whatever ...
exports Enum
Foo.js
const Enum = require('./Enum');
// it's unclear why `Foo` is even a function to be honest
function Foo() { }
Foo.Enum = Enum;
exports Foo
someOtherFile.js
const Foo = require('./Foo');
const myEnumInstance = new Foo.Enum();
将其作为Foo的一部分
不清楚。您的意思是要创建某个对象的新实例并将其附加到Foo
的实例?像函数Foo(){this.something=new enum();}
Foo的一部分,这样我就不必显式地实例化enum
,因为Foo
只是从文件中导出。现在还不清楚你说的使其成为Foo
的一部分是什么意思-你的意思是希望Foo
继承自enum
?您希望实现的Foo
和enum
之间的关系是什么?Foo
的每个实例是否都应该包含enum
的一个实例?每个Foo
是否应该共享enum
的一个实例?等等…持有一个实例意味着它是对象本身的一部分。共享实例指的是什么?从技术上讲,Foo
应该以某种方式存储或共享enum
的一个实例,但是实用程序函数的编写方式非常糟糕,我想在不中断或不做额外工作的情况下完成它。但是目前,Foo
是一个空构造函数,然后我们向它添加了不同的方法。一个例子是:Foo.General={};Foo.General.SetValue=function(value){}
…您混淆了术语Foo
似乎不是构造函数,它似乎是一个命名空间。它是如何使用的?任何地方都有调用new Foo()
的文件吗?我冒昧地猜测,这不是基于您如何描述它。因此,使用Enum
构造函数创建不同的文件才有意义,因为它不是从Foo.js
导出的,是吗?@kol-不,您可以将Enum
的整个实现放在Foo.js
中。但是,坦率地说,文件是免费的,请保持代码干净,并为每个问题创建单独的文件(或文件夹)。为什么必须从Foo.js
导出Enum
?为什么想要使用它的文件不能只要求('./Enum')?主要原因是我认为它没有实现的那么大,没有自己的文件。它有两种方法分开你的顾虑,我宁愿有100个20行文件而不是一个2000行文件。