вызывающий javascript удаляется, какова альтернатива?

#javascript

#javascript

Вопрос:

Как объявлено здесьhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/caller

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

Какова альтернатива для такого отражения?

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

1. В основном говорю: альтернатив НЕТ.

2. Хорошо спроектированной функции должна быть передана необходимая информация (либо в качестве аргумента, либо this -«аргумент»).

3. Я не думаю, что она есть, в любом случае, это запах кода. Функции не нужно ничего знать о своем вызывающем устройстве.

4. @JohnMontgomery нет, если вы хотите выполнить генерацию кода

5. Возможно, вы сможете найти обходные пути для каждого использования в каждом конкретном случае. У вас есть пример?

Ответ №1:

Вызывающий должен передать любую информацию, необходимую для обратного вызова

Консенсус по таким функциям, как caller, заключается в том, что они пахнут кодом. Вам нужно передать дополнительную информацию, если функция обратного вызова должна что-то знать о своем контексте.

 function doStuff() {
    console.log("caller is"   doStuff.caller);
}


function doStuffWithoutCaller(context) {
    console.log("additional context is: "   context);
}  
 <button onclick="doStuff()">
Caller
</button>

<button onclick="doStuffWithoutCaller('buttonClick')">
Without caller
</button>  

На самом деле очень маловероятно, что поставщики браузеров выбьют ковер из-под вас.