Подмена контекста - насколько это правильно?

Рейтинг: 0Ответов: 0Опубликовано: 10.09.2014
function Test(){
    //...
}

Test.prototype = {
    data: undefined,
    working: null, // массив с инстенсами
    collectData: function(){
        this.data = 'data'; // здесь я собираю данные
    },
    run: function(){ // здесь прохожу по массиву инстенсов
        var length = this.working.length,
            item = undefined;

        for(var i = 0; i < length; i++){
            item = this.working[i];
            item.one.call(this); // и передаю им this в качестве контекста
        }
    }
}

/**
 *  И все это сделано для того,
 *  чтобы в объектах ниже я мог обращаться 
 *  к свойству data инстенса  var test = new Test();
 *  как к своему...
 *
 *  Делают так в js? Под "так" я подразумеваю
 *  вызов методов из массива в инстенсе test
 *  с передачей в эти методы себя в качестве
 *  контекста? 
 *  И если так в js делают, то как это с точки
 *  зрения ООП?
 */

var Obj1 = {
    one: function(){
        console.log('obj1', this.data);
    },
    two: function(){
        //...
    }
}

var Obj2 = {
    one: function(){
        console.log('obj2', this.data);
    },
    two: function(){
        //...
    }
}

var test = new Test();
test.working([new obj1(), new obj2()]);
test.collectData();
test.run();

У меня есть объект Test, который предназначен для обработки данных, которые получает по ссылке. Он получает не форматированную строку, которую нужно очень сильно отфарматировать и для этого у меня существуют ещё объекты, в моем случаи obj1 и obj2, каждый из которых проводит нужные действия с данными.
И вопрос - можно ли так делать в js и не выходит ли такой подход за рамки ООП?

Ответы

Ответов пока нет.