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

#javascript #node.js

#javascript #node.js

Вопрос:

У меня есть длинный список функций в некоторых библиотеках, и я хотел бы получить к ним доступ через структуру при написании кода. Я попытался сделать следующее:

 function fn1(){doSomething}
function fn2(){doSomething}
//more functions...
function fn100(){doSomething}


group1 = {
"set1":{"item1": fn1,
        "item2": fn2,
        "item3": fn3
       }
//more sets...
}

command = {
"group1": group1,
"group2": group2,
"group3": group3
}
  

Цель состоит в том, чтобы написать

 command.group1.set1.item1()
  

Хотя описанный выше подход работает, он не предоставляет this функции.

Есть ли какой-либо способ создать шаблон, который позволяет это сделать правильно и передает this

РЕДАКТИРОВАТЬ: я стремлюсь передать оригинал this в конечную функцию, что в основном означает цепочку this через структуру объекта.

Комментарии:

1. Что вы подразумеваете под «это не предоставляет this функции»? В настоящее время this он будет привязан к набору, в котором находится функция. К чему вы ожидаете this привязки при вызове метода?

2. вы можете использовать call и apply для передачи this при выполнении функции для передачи ссылки на this .

Ответ №1:

Используйте bind для привязки любых this функций, которые вы хотите, к функциям

Комментарии:

1. да, bind кажется правильным советом, однако bind применяется только к функциям, а не к объектам, которые я использовал для создания иерархии «навигации». Похоже, мне нужно будет изменить свой подход и использовать функцию / класс вместо структуры объекта.