Создайте массив JavaScript указателя на функцию, не вызывая его - PullRequest
4 голосов
/ 17 апреля 2010

У меня есть код ниже. Я хотел бы иметь массив (кнопки) с одним элементом, указывающим на функцию (closeFlag).

<script type="text/javascript">
    var closeFlag = new function() {
        alert('Clicked');
    }
    var buttons = {
        'OK': closeFlag
    }
</script>

Однако при загрузке страницы сразу же появляется предупреждение. Когда массив создается, вместо того, чтобы использовать его в качестве указателя, JavaScript вызывает мою функцию. Зачем? Какая ошибка, заблуждение у меня есть?

1 Ответ

12 голосов
/ 17 апреля 2010

Ключевое слово new, оно вам не понадобится.

<script type="text/javascript">
  var closeFlag = function() {
    alert('Clicked');
  }
  var buttons = {
    'OK': closeFlag
  }
</script>

В вашем коде происходит то, что он создает анонимную функцию, а затем присваивает результат (this) closeFlag.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...