Показать сообщение отдельно
  #1 (permalink)  
Старый 14.11.2012, 19:05
Аспирант
Отправить личное сообщение для bFree Посмотреть профиль Найти все сообщения от bFree
 
Регистрация: 19.08.2008
Сообщений: 42

self = this в обертке Class
Здравствуйте!
В этом (Объекты, прототипы и циклы) топике мне посоватовали использовать обертку Class для организации объектов.

Мне она понравилась. Очень удобно.

Есть одно НО:
Раньше я всегда в начале класса писал var self = this и внутри всех методов использовал self вместо this.

Например:
function A(o) {
    var self = this;

    var init = function() {
        self.setOptions(o);
    };

    this.setOptions = function(o) {
        self.options = o;
    };

    init();
}

var a = new A({test: "foo"});
var b = new A({test: "bar"});

console.log(a.options); // foo
console.log(b.options); // bar


Теперь я начал использовать обертку Class, которую мне посоветовали.
Возникла проблема, которую я затрудняюсь решить:
var A = new Class(function() {
    var self = this;

    this.__construct__ = function(o) {
        self.setOptions(o);
    };

    this.setOptions = function(o) {
        self.options = o;
    };
});

var a = new A({test: "foo"});
var b = new A({test: "bar"});

console.log(a.options); // bar  (должно быть "foo"!)
console.log(b.options); // bar


Скорее всего я делаю что-то неправильно. Использовать this внутри методов неудобно, т.к. активно используется jquery и различные callback's, внутри которых this меняет свое значение.

Может быть есть решение проблемы? Заранее благодарен
Ответить с цитированием