Песочница JavaScript с использованием ключевого слова - PullRequest
0 голосов
/ 28 октября 2011

Я наткнулся на это сообщение Дастина об использовании ключевого слова with для изолированной среды некоторых модулей:

http://dustindiaz.com/sandboxing-javascript

Фактический фрагмент кода:

(function () {

  with (this) {
    {{ender}}
    {{library}}
  }

}).call({})

Может кто-нибудь объяснить, что он делает лучше? Я не совсем могу понять преимущество использования with(this) здесь, и что означают {{ender}} и {{library}}. Он сравнивает этот подход с использованием iframes (что я понимаю), но я не могу понять, что он пытается здесь сделать.

1 Ответ

1 голос
/ 28 октября 2011

Он заставляет все переменные (и функции), объявленные внутри этой функции, находиться в контексте this, то есть в контексте функции обтекания.

Обычно, если вы создаете переменную, используя var внутри функции, она является локальной для этой функции, и это хорошо. Но что, если вы этого не сделаете? В этом случае с помощью with все переменные, которые в противном случае были бы глобальными, вместо этого находятся в контексте с (в данном случае контекст - this функции.)

...