在不创建新实例的情况下重新初始化类实例?

时间:2018-02-02 00:11:19

标签: javascript

我想知道是否有一种标准方法可以重新初始化或重构一个类实例,而无需一起创建新实例。

我们说我有一个TestClass实例:

class TestClass {
  constructor() {
    this.x=0;
    this.y=50;
    this.z=200;
  }
}

var testClassInstance=new TestClass();

基本上,加班我调整了它的一些价值观。

testClassInstance.x+=250;
testClassInstance.y-=20;

然后我想将其所有值重置为创建实例时定义的任何值。我想知道是否有办法基本上重新初始化它,而不创建一个全新的实例?

类似于

testClassInstance.constructor()

安全可靠吗?

2 个答案:

答案 0 :(得分:2)

class TestClass {
  constructor() {
    this.reset();
  }

  reset(){
    this.x=0;
    this.y=50;
    this.z=200;
  }
}

const myTestClass = new TestClass();
myTestClass.x = 5;
console.log(myTestClass.x); // 5
myTestClass.reset();
console.log(myTestClass.x); // 0

答案 1 :(得分:2)

这个答案的产生是因为这个问题的第一个版本。

您的课程从未被修改过。该类是一个实现,您修改的是使用该实现创建的实例。

查看此代码段:



class TestClass {
  constructor() {
    this.x=0;
    this.y=50;
    this.z=200;
  }
}

var testClassInstance=new TestClass();

testClassInstance.x+=250;
testClassInstance.y-=20;

console.log(testClassInstance.x);
console.log(testClassInstance.y);

var anotherTestClassInstance=new TestClass();

console.log(anotherTestClassInstance.x);
console.log(anotherTestClassInstance.y);



 看到?新对象具有在TestClass的构造函数中声明的初始值。