Я знаю, как использовать методы для изменения контекста вызова функции/метода: применить, связать, вызвать. Мой вопрос в том, есть ли способ проверить, был ли уже установлен этот параметр/метод?Проверка контекста JavaScript/метода
// given
var beta;
function alpha() {
return this;
}
function isContextSet (fn) {
/* check for context binding on fn */
}
beta = alpha.bind("hello");
isContextSet(alpha); // returns false
isContextSet(beta); // returns true
Я думаю, я знаю ответ на этот вопрос уже, но думал, что я хотел бы спросить в любом случае, если для каких-либо других причин, чем: 1. подтверждает мое предположение, или 2. научиться чему-то. Я уверен, что я не первый, кто задал этот вопрос, но я понятия не имел, как на самом деле найти ответ, поскольку все, что я получаю, - это ответы на способы использования: .apply(), .call() или. связывания().
Возможно, это помогает: [К какой объектной функции javascript привязана (каково ее «это»)?] (Http://stackoverflow.com/q/14307264/218196). –
_ «уже имеет свой контекстный набор» _ Что вы подразумеваете под «уже»? '.apply()', '.call()' и '.bind()' не постоянно устанавливают 'this' для каждого вызова функции (отмечая, что' .bind() 'возвращает функцию _new_, которая постоянно имеет конкретное 'this', но фактически не изменяет функцию _original_). Каждый возможный способ вызова функции устанавливает 'this' в _something_ - это просто некоторые способы сделать это неявно, некоторые делают это явно ... – nnnnnn
Я добавил код, чтобы показать, к чему я пытаюсь добраться. Я понимаю, как работают эти три метода, и я знаю, как проверить контекст функции/метода, находясь внутри тела вызова. Как вы проверяете контекст вне вызова, как я показал выше? Я не могу придумать способ сделать это вообще в JS. – kalisjoshua