Изменение переменной трека в Javascript - PullRequest
1 голос
/ 25 декабря 2010

Можно ли отслеживать изменения переменных в JavaScript? Я хотел бы иметь возможность запускать функцию, когда переменная была изменена в классе.

<script>
var mywindow = new Box();
mywindow.title = "newtitle"; 
//Launches mywindow.applyTitle() and changes html
</script>

Ответы [ 2 ]

2 голосов
/ 25 декабря 2010

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

Пример: http://jsfiddle.net/PEYyk/

var Box = function() {
    // the constructor
};
Box.prototype.setTitle = function( new_title ) {
    this.title = new_title;
    this.applyTitle();
};
Box.prototype.applyTitle = function() {
    // apply the title
};

Тогда назовите это так:

var mywindow = new Box();
mywindow.setTitle( "newtitle" );
2 голосов
/ 25 декабря 2010

Возможно, вы могли бы использовать явный метод для установки значения и прикрепить к нему ваши обратные вызовы. Что-то в этом роде будет работать:

var Box = new Class({
    setTitle: function(title) {
        this.title = title;

        // call your callbacks now. you probably need some way to register them btw
    }
});

Адаптируйте идею под синтаксис вашего класса ...

Существует также не очень хорошо поддерживаемый синтаксис получения / установки для JS (эквивалентный свойствам в Python) См http://ejohn.org/blog/javascript-getters-and-setters/.

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