这是一个很愚蠢的问题,但是我早些时候就在随机考虑,而我从未尝试过这样做……让我们说我有一个像这样的类(class):

function Drug () {
  this.name = '';
  this.type = '';
}

在页面的后面,我为此毒品设置了一些值:
var drug = new Drug();
drug.name = 'Testing';
drug.type = 'TestType';

是否有一种简单的方法可以让我们将此Drug实例重新启动为其默认值,而无需执行以下操作:
var drug2 = new Drug();

像某种 reset 函数一样,我可以在Drug内部创建仅做drug.reset();吗?

我试过了:this.clear = function () { return new Drug(); },但是没有成功...

最佳答案

您只是略微考虑了一下。与其直接在构造函数中初始化这些属性,不如创建一个init()方法来初始化它们,由构造函数调用。然后,您可以调用它来重新初始化对象的属性。

function Drug () {
  this.init();
}
Drug.prototype.init = function() {
  this.name = '';
  this.type = '';
}

// Instantiate:
var d = new Drug();
d.name = 'Testing';
console.log(d);
// Drug {name: "Testing", type: ""}

// Re-initialize it
d.init();
console.log(d);
// Drug {name: "", type: ""}

当然,这不是您处理它的唯一方法,而是想到的第一个方法。

08-17 12:32