Получить эту привязку функции

Учитывая функцию,

function main() {
  // some logic
}

Предположим, что функция main связана с const obj = { name: "John Doe" }, как const fn = main.bind(obj);

Теперь вопрос: есть ли способ получить привязку функции fn? Примечание: я знаю, что к привязке можно получить доступ с помощью ключевого слова this внутри функции main, но есть ли способ получить доступ к значению this вне контекста. есть ли магический (гипотетический) метод вроде fn.getContext().

Спасибо за ваше время.


person Kharel    schedule 08.07.2020    source источник
comment
Нет, так как функции обычно не привязаны к какому-либо объекту, привязка этого значения не создает новых свойств для функции, bind просто создает новую функцию, оборачивающую вызов функции в эту вновь созданную функцию.   -  person Teemu    schedule 08.07.2020
comment
@Teemu: как минимум согласно спецификации, новый объект функции имеет внутреннюю ссылку на связанное значение. Но это значение не раскрывается через какой-либо пользовательский API.   -  person Felix Kling    schedule 08.07.2020
comment
@FelixKling Да, внутреннее свойство назначается новому объекту функции, я предполагаю, что вы не можете получить доступ к этому объекту напрямую в JS, ссылка по-прежнему относится (казалось бы?) к исходной функции.   -  person Teemu    schedule 08.07.2020
comment
@Teemu: Мы можем говорить о разных вещах. .bind возвращает новый объект функции, и это объект, который имеет внутренний слот BoundThis (спасибо, Берги). Таким образом, вы можете получить доступ к этому функциональному объекту, но не можете получить доступ к внутреннему слоту.   -  person Felix Kling    schedule 08.07.2020


Ответы (1)


Нет, нет. В то время как новый объект функции имеет внутренний слот [[BoundThis]], этот слот недоступен через пользовательский API.

person Felix Kling    schedule 08.07.2020
comment
спасибо, но я продолжу свои поиски. Я приму ответ в ближайшем будущем, когда устану. - person Kharel; 08.07.2020