Javascript 是否可以使用多个构造函数创建一个新实例?
是否有一种简单的方法可以使用2个或更多函数来创建1个新实例 比如说,Javascript 是否可以使用多个构造函数创建一个新实例?,javascript,constructor,Javascript,Constructor,是否有一种简单的方法可以使用2个或更多函数来创建1个新实例 比如说, function Vehicle(manufacturer, cost) { this.manufacturer = manufacturer; this.cost = cost; } function Aircraft(crewSize, range) { this.crewSize = crewSize; this.range = range; } let p51Mustang = ne
function Vehicle(manufacturer, cost) {
this.manufacturer = manufacturer;
this.cost = cost;
}
function Aircraft(crewSize, range) {
this.crewSize = crewSize;
this.range = range;
}
let p51Mustang = new Vehicle + Aircraft ???
我知道可以用这样的方式将构造函数链接在一起
function Vehicle(manufacturer, cost) {
this.manufacturer = manufacturer;
this.cost = cost;
}
function Aircraft(manufacturer, cost, crewSize, range) {
Vehicle.call(this, manufacturer, cost)
this.crewSize = crewSize;
this.range = range;
}
let p51Mustang = new Aircraft('North American', '$50,000', 1, '2,656 Km');
但是有没有一种方法可以做到这一点,即同时调用两个构造函数,而不是将它们链接在一起?非常感谢您的任何意见 您可以使用
这里有一个片段:
功能车辆(制造商,成本){
这个。制造商=制造商;
成本=成本;
}
多功能飞机(crewSize,range){
this.crewSize=crewSize;
这个范围=范围;
}
让p51Mustang=Object.assign(新车('BMW',1000),新飞机(10200))
console.log(obj)
您可以使用对象.assign
功能车辆(制造商,成本){
返回{
制造商
成本
}
}
多功能飞机(crewSize,range){
返回{
皱纹化,
范围
}
}
设p51Mustang=Object.assign(车辆(“北美”,“50000美元”)、飞机(1,'2656公里”);
控制台日志(p51Mustang)你能解释一下你想要的输出吗?一个对象只能从一个原型对象继承。我的输出类似于我的“链接”示例。2个构造函数,4个参数,1个新实例。我只是用这个来测试。我试图理解在我撞到墙之前我能把构造函数推多远。我没有意识到用返回{}构建一个新对象是可能的。那真的很有趣。用这种方式而不是使用这种和新的方式有什么好处吗?@DR01D好处是它更清晰,至少对我来说,我觉得它更可组合。不同之处在于,使用new创建的是一种对象类型的实例,这种方法成本更高,但它允许您随时调整原型。因此,如果您想在以后的代码中向车辆类型的所有实例添加一个方法,您可以通过设置Vehicle.prototype.methodName等来实现。然而,在您当前的用例中,通过将构造函数组合到一个新对象中,您正在断开与原型的连接。