如何重置这个JS对象?

Bac*_*tnz 6 javascript

在这里,我想将Data的所有属性重置为原始值,我是如何做到的?

var Data = {
  prop1: false,
  prop2: true,
  prop3: null
}

Some code executes & sets Data.prop1 = "abc";
Run Code Online (Sandbox Code Playgroud)

我从来没有实例化数据,这是一个问题吗?

Hal*_*yon 14

Data是一个dynamic对象.您可以添加一个将重置所有值的函数:

var Data = {
    prop1: false,
    prop2: true,
    prop3: null,
    reset: function () {
        this.prop1 = false;
        this.prop2 = true;
        this.prop3 = null;
    }
}
Run Code Online (Sandbox Code Playgroud)


jfr*_*d00 7

另一种方法是:

var Data = {
  prop1: false,
  prop2: true,
  prop3: null,

  // save initial values
  init: function() {
      var origValues = {};
      for (var prop in this) {
          if (this.hasOwnProperty(prop) && prop != "origValues") {
              origValues[prop] = this[prop];
          }
      }
      this.origValues = origValues;
  },
  // restore initial values
  reset: function() {
      for (var prop in this.origValues) {
          this[prop] = this.origValues[prop];
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,当您使用它时,您可以调用Data.init()初始化代码来保存当前值,以便以后可以恢复它们Data.reset().这具有维护更容易的优点.向数据结构添加或更改变量时,它会自动合并到重置功能中,而无需进行任何特定更改.

你可以在这里看到它的工作:http://jsfiddle.net/jfriend00/EtWfn/.