2013-07-28 3 views
0

У меня есть приложение, использующее jquery-mobile и jquery. На первой странице есть объект создан, который затем используется для временного хранения:Пустой объект Javascript (JQuery Mobile)

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(); 

, чтобы получить новую копию его :)

+0

Сколько ссылок на объект у вас есть? Если 'StorageObject' является единственной ссылкой, просто скажите' StorageObject = {} 'или' StorageObject = new Object(); 'и старый объект будет собран мусором. – nnnnnn

+0

Поскольку, вероятно, нет прямой ссылки на объект, вы просто должны иметь возможность делать «StorageObject = new object();», чтобы иметь новый, нет? –

ответ

2

Если действительно необходимо, вы можете loop over и delete каждого свойства:

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

В противном случае, как и другие предложили, просто заменить его другим Object:

StorageObject = {}; 
0

вы не можете опорожнить сам объект, то есть чтобы очистить его вручную, возможно, используя пользовательскую функцию, как это:

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

или, если вам нужно просто обратиться к variabile StorageObject, вы можете просто установить его в нулевое значение или новый экземпляр объекта каждый раз, когда вам нужно сбросить его, как этот

StorageObject = null; 

или этого

StorageObject = new Object(); 
Смежные вопросы