Давайте просунем это в свой мозг и покончим с этим раз и навсегда.
Я пишу этот небольшой пост, потому что вышеупомянутый вопрос преследовал меня очень давно, и я знал, что не единственный. Каждый раз, когда я видел, как кто-то использовал любой из этих трех методов, мне приходилось бросаться в 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]. Пожалуйста, порекомендуйте этот пост, если он вам понравился, и поделитесь им со своей сетью.