Давайте просунем это в свой мозг и покончим с этим раз и навсегда.

Я пишу этот небольшой пост, потому что вышеупомянутый вопрос преследовал меня очень давно, и я знал, что не единственный. Каждый раз, когда я видел, как кто-то использовал любой из этих трех методов, мне приходилось бросаться в MDN, чтобы понять, что происходит.

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

Отказ от ответственности: это не теоретическое решение, а действительно хитрый способ запомнить разницу.

Основная причина путаницы между методами call() и apply() заключается в том, как передавать дополнительные аргументы помимо this. А почему у нас вообще bind()?

Итак, давайте узнаем, как легко отличить эти три вещи.

Подать заявление()

apply(this [, [arg1, arg2,...]]): вызывает функцию с предоставленным значением this. Дополнительные аргументы представлены в виде единого массива.

Как запомнить: «A pply принимает аргументы как массив A» или «AA»

Вызов()

call(this [, arg1, arg2...]): вызывает функцию с предоставленным this. Дополнительные аргументы представлены в виде списка, разделенного запятыми.

Что нужно помнить: «аргументы вызова разделяются запятыми» или «CC».

Связывать()

bind(this): возвращает новую функцию, значение this которой связано с предоставленным значением.

Вспомните: bind () - это единственный метод из трех, который в целом возвращает новую функцию. Он не вызывает функцию.

Заворачивать

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

Есть ли у вас другие приемы запоминания, связанные с программированием? Пожалуйста, поделитесь им с сообществом, так как это поможет всем. Особенно во время тех интервью.

Если у вас есть вопросы или сомнения, напишите мне в Twitter @ rajat1saxena или напишите мне на [email protected]. Пожалуйста, порекомендуйте этот пост, если он вам понравился, и поделитесь им со своей сетью.