Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2017, 09:22
Новичок на форуме
Отправить личное сообщение для AndVGri Посмотреть профиль Найти все сообщения от AndVGri
 
Регистрация: 02.04.2017
Сообщений: 3

Использование this во вложенных структурах
Доброе время суток.
Немного о сути задачи. Есть система, которая для внутренней автоматизации использует javascript. Задачей стоит перенос данных атрибутов объектов системы из таблиц Excel (каждая таблица описывает данные своего типа объекта).
Так как типов объектов много, то хотелось бы код переноса сделать более универсальным, так как каждый тип атрибута требует (в зависимости от типа значения) своего оформления для записи.
Для этого собственно создал ниже представленную структуру, которая описывает для каждого столбца таблицы функцию value, код который создаёт требуемое оформление. Массив cols объекта colReader описывает связь данных столбцов строки с атрибутами объектов и функцией оформления значения ячейки в формат типа атрибута.
var nextRow = ["123", "23.4", "abc"];
var colReader =
{
    row : null,
    cols :
    [
        { colId : 0, 
          AttrId : 234, 
          value : function() {return parseInt(colReader.row[this.colId]);} },
        { colId : 1, 
          AttrId : 541,
          value : function() {return parseFloat(colReader.row[this.colId]);} },
        { colId : 2, 
          AttrId : 143,
          value : function() {return colReader.row[this.colId]; } }
    ]
};
colReader.row = nextRow;
for (var i = 0; i < colReader.cols.length; i++)
{
    // сохранение новых значений атрибутов объекта
    // obj.Attribute(colReader.cols[i].AttrId).setValue(colReader.cols[i].value());
    console.log( colReader.cols[i].value() );
};

В примере nextRow представлена массивом. В отладчике Chrome всё работает.
Собственно, к теме вопроса. Я только начинаю изучать javascript.
Насколько понял ключевое слово this относится свойствам объекта, определяемого function. Но почему у меня получилось обратиться к полю colId объекта, для которого определена функция value?
И каким способом из функции value обратиться к полю row, не используя имя переменной объекта colReader?

Заранее спасибо всем откликнувшимся.
Ответить с цитированием
  #2 (permalink)  
Старый 02.04.2017, 13:42
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,007

https://learn.javascript.ru/objects-more тут хорошо разобраны все варианты для this
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript. Уровень 3в. Серверное программирование на Node.js maxy666 Node.JS 8 10.08.2014 00:36
Использование web камеры freelancer.rnd Общие вопросы Javascript 0 24.07.2014 16:30
onclick во вложенных div Redya69 Общие вопросы Javascript 2 28.06.2014 21:53
Про использование cookies zloctb Общие вопросы Javascript 3 11.02.2012 09:36
Как сделать чтобы text() брал только текст родителя без текста вложенных контейнеров? Andrey32 jQuery 3 23.05.2009 01:33