在这里,我想将Data的所有属性重置为其原始值,该怎么做?

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

Some code executes & sets Data.prop1 = "abc";

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

最佳答案

另一种方法是:

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];
      }
  }
}

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

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

07-24 22:24