Javascript - 如何在运行时动态创建对象?

Kol*_*ten 5 javascript constructor object

我有一个构造函数:

function car(name, speed, options){
  this.name = name;
  this.speed = speed;
  this.options = options;
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样创建一个新对象:

var carMustang = new car("Mustang", 250, ["Cruise Control","Air Conditioning", "ABS"]);
Run Code Online (Sandbox Code Playgroud)

如果我想让某人单击一个按钮,然后通过单击该按钮动态创建新对象,我将如何进行?我不希望“核心”对象(carMustang)发生变化,而是让用户可以选择更改他们自己的“个人”对象实例的选项。此外,他们需要创建同一对象的多个实例,能够随意更改属性,而不会影响代码中定义的“核心”对象。

Car*_*ate 0

为什么不直接创建一个从点击处理程序调用的“自定义构造函数”?:

function newBaseMustang() {
    var baseMustang = new car("Mustang", 250, ["Cruise Control","Air Conditioning", "ABS"]);

    return baseMustang;
}
Run Code Online (Sandbox Code Playgroud)

然后调用者可以进行他们想要的任何更改:

var mustang1 = newBaseMustang();
mustang1.speed += 100;

var mustang2 = newBaseMustang();
mustang2.name = "MyMustang";
Run Code Online (Sandbox Code Playgroud)

您还可以使用像 Immutable.js 这样的库来使“模板汽车”不可变并制作它的修改副本。