【问题标题】:Empty a Javascript Object (Jquery Mobile)清空 Javascript 对象(Jquery Mobile)
【发布时间】:2013-07-28 12:11:29
【问题描述】:

我有一个使用 jquery-mobile 和 jquery 的应用程序。 在第一页上创建了一个对象,然后将其用于临时存储:

var StorageObject = new object();

这是在全局空间中定义的,因此它在会话中是持久的。 当点击链接并采取行动时,对象会更新为值:

StorageObject.value = 'something';

我的问题是你需要清空对象(如果有人点击取消或其他东西)并重新开始需要一个空的存储对象。因为 jquery-mobile 基本上都在一个页面上,所以没有重新加载全局空间,因此存储对象从最后一次使用中持续存在。 我不相信我可以调用任何东西来清空对象,而无需编写一些递归代码来遍历每个值并清空它。

是否有清空对象的方法或者我应该以另一种方式这样做?

=============================================

编辑:

遵循以下建议后,我仍然遇到存储对象中的数组问题。 我必须更改初始定义,所以我定义了存储对象:

StorageObject.value  = 0;
StorageObject.ArrayofValues = new Array();

到:

function MyStorageObject(){
  this.value = 0;
  this.ArrayofValues = new Array();
};

var StorageObject = new MyStorageObject();

从那里开始,我可以按照其他人的建议,拨打电话:

StorageObject = new MyStorageObject();

获取它的新副本 :)

【问题讨论】:

  • 你有多少对该对象的引用?如果StorageObject 是唯一的引用,只需说StorageObject = {}StorageObject = new Object();,旧对象将被垃圾回收。
  • 由于可能没有直接引用该对象,您应该可以简单地通过 StorageObject = new object(); 获得一个新对象,不是吗?

标签: javascript jquery-mobile object


【解决方案1】:

如果真的需要,可以loop overdelete各属性:

for (var prop in StorageObject) {
    if (StorageObject.hasOwnProperty(prop)) {
        delete StorageObject[prop];
    }
}

否则,正如其他人建议的那样,只需将其替换为不同的Object

StorageObject = {};

【讨论】:

    【解决方案2】:

    你不能清空对象本身,你必须手动清空它,也许使用这样的自定义函数:

    StorageObject.empty = function(){
        //empty all my data
    }
    

    或者,如果您只需要引用 StorageObject 变量,则可以在每次需要像这样重置它时将其设置为 null 或新的对象实例

    StorageObject = null;
    

    或者这个

    StorageObject = new Object();
    

    【讨论】:

      猜你喜欢
      • 2016-05-12
      • 1970-01-01
      • 2010-09-30
      • 2013-07-12
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      相关资源
      最近更新 更多