Зачем использовать функцию JavaScript (добавлена ​​в CoffeeScript) «.call (это)»

StackOverflow https://stackoverflow.com/questions/4542942

  •  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 объект из окружающего контекста.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top