Зачем использовать функцию JavaScript (добавлена в CoffeeScript) «.call (это)»
-
13-10-2019 - |
Вопрос
Когда я использую последний (1.0) выпуск Coffee-Script, простой вывод JavaScript выглядит так (по умолчанию):
(function() {
var a;
a = 1;
}).call(this);
Что значит .call (это) Сделай, и какова была бы причина добавить это?
Решение
Он создает функцию, а затем вызывает себя с помощью области родительской функции/объектов.
.call и .apply - это разные методы вызова функции. Вы в основном создали функцию, которая ничего не делает, кроме установить A = 1 в своем собственном объеме.
В JavaScript вам нужно понять, что каждая функция является объектом, и this
это то, что относится к текущему объекту/функции. С использованием .call(this)
переопределение this
Изнутри функции и заменяет его на то, что из вызывающего контекста.
Другие советы
Это способ убедиться, что скомпилированный CoffeeScript имеет свою собственную область для имен переменных. Это имеет преимущества с точки зрения эффективности и простоты (вы знаете, что сгенерированный JavaScript не будет растоптать переменные, используемые другим кодом). Вы можете отключить его с помощью --bare
(или же -b
) опция для компилятора CoffeeScript.
Причина call(this)
просто чтобы убедиться, что у кофейка такого же this
Как прицел, где он находится, потому что функции обычно не наследуют их this
объект из окружающего контекста.