Во-первых, эта статья написана со ссылкой на главу от отличной книги Кайла Симпсона, которую вы не знаете JS: этот и объектные прототипы. Это невероятный ресурс для любого, кто хочет построить более глубокое понимание JavaScript.
Какие правила определяют порядок приоритета, когда это точки, когда выполняется функция?
Существует четыре правила, которые определяют порядок приоритета на том, где этот момент для выполнения функций:
• По умолчанию Привязка • неявное Привязка • явное Привязка • жесткая привязка
Привязка по умолчанию:
Функция JS () { console.log (this.binding) ; } вари; js ();//связывание по умолчанию
Разбие на нашем фрагменте выше и понимая, как наш звонок определяет, где это точки, когда функция JS () {…} выполняется, во-первых, функция JS () {…} – наш Call-стек, который содержит console.log ( это. и сайт вызова для нашей функции js (); который расположен на последней строке фрагмента, которая является точкой, из которой называется функция. Кроме того, наша переменная VAR; объявлен в глобальном объеме.
Неявное обязательство:
Функциональные свойства () { console.log (this.binding) ; } var object = { Привязка: «неявное привязку», Свойства: свойства }; Object.Properties ();//неявное обязательное
Если вы работали с APOLLO Resolvers или API React Context, это второе правило даст некоторую более глубокую четкость на том, как они работают через JavaScript.
Разбие на вышеуказанный фрагмент, наш звонок – это Функциональные свойства () {...}
который содержит нашу эту связующую связывание, наш звонок – это объект.
Однако то, что дифференцирует это правило к связыванию по умолчанию, в том, что наш звонок объявлен. Неявное правило может быть определено, если наш звонок имеет объект контекста, Функциональные свойства () {...}; Одинаково объявляется в том же моменте, что и наше обязательство по умолчанию с нашего первого примера, однако наш объект ссылок на сайт вызовов при вызове функции, Object.Properties ();.
В точке, на котором характеристики(); называется, это префиксировано VAR Object = {...} , который содержит значение на исполнении.
Ссылка: как штаты Кайла Симпсона в его книге вы не знаете JS: это и объектные прототипы:
«Когда есть объект контекста для ссылки на функцию, неявное правило связывания говорит, что это объект, который должен использоваться для этого привязки к функциям.
” С помощью неявного привязки, поскольку мы только что увидели, мы должны были изучить вопрос об объекте, чтобы включить ссылку на функцию, и использовать эту функцию свойства косвенно (неявно) связать это с объектом. “
Явная связывание:
Функциональные свойства () { console.log (this.binding) ; } var object = { Привязка: «Явная привязка» }; Properties.call (объект);//явный связывание или свойства .Apply (объект);//explicit связывание //вызовите или применимо получить тот же результат.
Вместо того, чтобы включить неявную функцию ссылки внутри VAR Object = {...} и префиксировать его на сайт вызова, мы можем явно вызвать функцию со встроенной утилитой Позвоните () и Применить () , функция Свойства () {...} Однако наш звонок, однако наш звонок использует встроенную утилиту для проверки функции явно. Важно отметить, что Позвоните () и Применить () привести к тому же результату, если только дополнительные параметры не передаются им.
Тяжелое обязательство:
Функциональные свойства () { console.log (this.binding) ; } var object = { Привязка: «жесткое обязательство» }; var () { Properties.call (объект); } HardbindedPropertiestoobject ();//жесткое обязательство
Что касается жесткого обязательного фрагмента выше, мы создаем функцию var () {//call (объект)} который вызывает вызов с VAR Object = {...} какие указывает на это.
Ссылка: как штаты Кайла Симпсона в его книге вы не знаете JS: это и объектные прототипы:
«Это связывание является оба явным, так и сильным, поэтому мы называем его жестким связыванием».
Другое, что следует отметить, что жесткий шаблон связывания имеет собственную встроенную утилиту Функция. Прототип .bind () Отказ
рассмотреть возможность:
Const Module = { Х: 42, GetX: Функция () { вернуть this.x; } }; const.getx; Console.log (USnoundgetX ());//Функция обращается в глобальную область //Ожидаемый выход: undefined const.bind (модуль) ; Console.log (BUBGETX ()); //Ожидаемый вывод: 42
Source MDN Developer.mozilla.org Государства:
Заключить, вот 4 правила этого, я настоятельно рекомендую прочитать, что вы не знаете серии JS Book Series от Kyle Simpson. Его книги Посмотрите все аспекты JavaScript, которые могут позволить любому разработчику получить владение языком.
Оригинал: “https://dev.to/trackmystories/javascript-the-four-rules-of-this-42g0”