【发布时间】:2011-03-14 08:08:05
【问题描述】:
我的实例需要不同的构造函数。常见的模式是什么?
【问题讨论】:
-
请更具体一点。你想要具有不同参数集的构造函数吗?
-
Javascript 中可以有多个构造函数吗?
-
是也不是@DougHauf。是的,因为 bobince 提供的答案提供了一种提供等效行为的方法。不,因为如果你想要多个不同的构造函数(每个都共享同一个原型对象)原型对象的构造函数属性如何设置(因为构造函数属性只能指向一个构造函数)。
-
所有这些答案都是旧的/不理想的。我懒得输入答案,但是您可以将对象传递给函数和构造函数,然后像使用参数一样使用键,例如:
function ({ oneThing = 7, otherThing = defaultValue } = {}) { }。我在其中添加的额外= {}是我最近学到的另一个技巧,以防您希望用户根本不传递任何对象并使用所有默认值。 -
后续:这里有一些解决这个问题的好方法:stackoverflow.com/a/32626901/1599699stackoverflow.com/a/41051984/1599699stackoverflow.com/a/48287734/1599699我特别喜欢最后一个,它是真正的多构造函数支持,使用静态工厂用作构造函数(
return new this();、return new this.otherStaticFactoryFunction();等)!
标签: javascript design-patterns oop