Деконструктор Javascript - PullRequest
       4

Деконструктор Javascript

4 голосов
/ 26 августа 2011

Можно ли как-то определить деструктор для объекта в JavaScript, который будет вызываться автоматически при удалении объекта?

Я создаю свой объект следующим образом:

function SomeObject(){
    this.test = null;

    this.method = function(){
      alert("Testing Method");
    };

    this.destroy = function(){
      // Destroy stuff here
    };
}

var test = new SomeObject();

Я могу вызвать destroy при необходимости, но когда пользователь выходит из страницы, я не могу вызвать destroy.Причина, по которой мне нужно это сделать, заключается в том, что я вызываю функции в php, используя ajax, который сохраняет данные сеанса.Я хотел бы, чтобы он уничтожил данные конкретного сеанса, когда я закончу с этим конкретным объектом js.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 26 августа 2011

Вы можете привязать к событию выгрузки:

function SomeObject(){

    ...

    var that = this;
    $(window).unload(function() {
        that.destroy();
    });
}

Таким образом, ваш метод уничтожения будет вызван, когда пользователь закроет страницу.

Без jQuery вы можете связать событие с этим:

var event = 'load';
var handler = function() { ... };
if (window.addEventListener) {
    window.addEventListener(event, handler, false);
} else {
    window.attachEvent('on'+event, handler);
}
2 голосов
/ 26 августа 2011

Вы не можете использовать деконструктор для объекта, но вы можете использовать window.onbeforeunload или window.onunload для выполнения каких-либо корректировок в последний момент.

Если вы вернете строку из onbeforeunload, она предложит пользователю эту строку в виде confirm диалога о том, хотят ли они выйти. Это полезно, прежде всего, если вы хотите предложить пользователю сохранить свою работу или аналогичное действие по сохранению состояния.

2 голосов
/ 26 августа 2011

Вы можете вызвать эту функцию для событий window.onunload или window.onbeforeunload.Но имейте в виду, что это может быть вызвано, даже если пользователь перемещается внутри вашего собственного приложения или когда используются кнопки «назад» и «вперед».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...