Некий класс

 
0
 
JavaScript
ava
neoks | 18.02.2013, 15:01
Вот соответственно решил глубже копнуть типа классы в JS, нашел примеры http://www.phpied.com/3-ways-to-define-a-javascript-class/, выбрал способ 3

Вроде норм, сначала все работало как положено но потом столкнулся с проблемой, так как this уже не являлся тем самым.
Покажу пример моего класса.


var kerk = new function() {
    this.cursor = 'test';
    this.start = function() {
        alert(this.cursor); //вернет test как должно

        this.ed(function(){
            alert(this.cursor); //уже undefined так как this уже другой, собственно вопрос как добраться теперь до this.cursor  ?
        })
    }
    this.ed = function(fn){
        //..... что та происходит там грузим картинку и по окончании делаем
        fn && fn();
    }
}

kerk.start();


Подскажите как лучше писать некие классы в JS ? чтобы не плодить куча функции и переменных )
Ответы (4)
ava
Aliance | 18.02.2013, 14:09 #
JavaScript Garden глава "Наиболее распространенные ошибки"
ava
Sanchezzz | 18.02.2013, 14:12 #
только kerk.cursor
Или делать внутри функции ссылку на объект _this=this;

var kerk = new function() {
var _this = this;
  this.start = function() {
        alert(this.cursor); //вернет test как должно
        this.ed(function(){
            alert(_this.cursor); //уже undefined так как this уже другой, собственно вопрос как добраться теперь до this.cursor  ?
        })
    }
}
    this.ed = function(fn){
        //..... что та происходит там грузим картинку и по окончании делаем
        fn && fn();
    }
}
kerk.start();
ava
baldina | 18.02.2013, 14:16 #
помогут замыкания.
а вообще, некие классы лучше писать в coffeescript. кстати там можно посмотреть, как они с классами и замыканиями обходятся
ava
neoks | 18.02.2013, 14:31 #
Aliance Спасиб за ссыль, подучим что там еще есть )) наверно обойдусь простым вариантом var _this = this;
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить