Вопрос о ссылке на функции в JavaScript

Я думаю, что другие ответы немного упускают суть. Во всех C ++, Java и C # вещь using / import совершенно необязательна. Так что это не отличается.

А затем вы должны сделать что-то еще, чтобы код был видимым на всех трех платформах.

В C ++ вам необходимо минимально включить его в текущий модуль перевода (достаточно для многих реализаций вектора, строки и т. Д.), Часто вам также необходимо добавить что-то в свой компоновщик, хотя некоторые библиотеки делают это автоматически основано на включении (например, повышение при сборке на Windows).

А в C # вы должны добавить ссылку на другую сборку. Это позаботится об эквиваленте включений и настроек ссылок.

А в Java вы должны убедиться, что код находится на пути к классам, например, добавив к нему соответствующий кувшин.

Таким образом, на всех трех платформах требуются очень похожие вещи, и разделение между using / import (удобство) и фактическим разрешением связи (требование) одинаково во всех трех.

12
задан Paolo Bergantino 1 June 2009 в 09:29
поделиться

7 ответов

Код должен работать без ошибок, поскольку функции администратора без реализации называть не буду. Единственное, что действительно тратится впустую, - это пропускная способность для передачи неиспользуемого кода администратора.

Однако позвольте мне предостеречь от безопасности через неясность. Если бы пользователь просмотрел этот код и увидел, что есть функции администратора, к которым он не имеет доступа, он мог бы заинтересоваться и попытаться загрузить файл «admin.js» и посмотреть, что делают эти функции. Если единственным препятствием для выполнения функций администратора является прекращение включения файла, то какой-нибудь хитрый пользователь, вероятно, быстро найдет способ вызвать функции администратора, когда они не могут этого сделать.

Если вы уже выполняете проверку подлинности / разрешений на стороне сервера для вызовов функций администратора, просто игнорируйте мой предыдущий параграф: -)

7
ответ дан 26 October 2019 в 10:46
поделиться

Лично я бы привязал (или повторно привязал) событие в admin.js:

$(function() {

$(".something").dblclick(function(){
  adminstuff();
});

});

function adminstuff()
{
  // ...
}

Таким образом, вызов adminstuff () и функция не будут видны "нормальным" пользователи.

4
ответ дан 26 October 2019 в 10:46
поделиться

Хороший вопрос. Это не должно вызывать никаких проблем с JavaScript.

Другие вещи, которые следует учитывать: вы потенциально открываете миру свои административные возможности, когда делаете это, что может быть полезно для хакеров. Вероятно, это не вызывает большого беспокойства, но об этом следует знать.

См. Также:

Почему я могу использовать функцию до того, как она определена в Javascript?

3
ответ дан 26 October 2019 в 10:46
поделиться

I don't think it matters. If it makes you feel better, you can make an empty stub function.

2
ответ дан 26 October 2019 в 10:46
поделиться

Javascript является динамическим - его не должно волновать, не определены ли функции.

Если вы поместите свои функции администратора в объект пространства имен (в любом случае, это хорошая практика), у вас будет пара опций.

  1. Проверить наличие функции в объекте администратора
  2. Проверить существование объекта администратора (возможно, заменив свой флаг)
  3. Вместо этого используйте объект операций, где файл администратора заменяет select функционирует при загрузке. (Еще лучше, используйте прототипное наследование, чтобы скрыть их.)
1
ответ дан 26 October 2019 в 10:46
поделиться

Я не думаю, что есть догматический ответ на этот вопрос, на мой взгляд. То, что вы делаете ... творчески. Если вам это не нравится, это может быть признаком рассмотрения других вариантов. Но если вам еще хуже с ними, то это может быть признаком того, что это правильный (или, может быть, наименее неправильный) поступок. В конце концов, вы могли бы смягчить путаницу, прокомментировав эту чертову строчку. Я бы не позволил себе религиозиться перед лучшими практиками. Просто будьте готовы поддержать свой выбор. В любом случае, вы мне это оправдали.

1
ответ дан 26 October 2019 в 10:46
поделиться

Я думаю, вам следует опасаться того, что вы создаете себе серьезные проблемы с безопасностью. В firebug довольно тривиально изменить такую ​​переменную, как admin, на "true", и, поскольку admin.js общедоступен, недостаточно просто не включать его на страницу, так как также просто добавить еще один тег скрипта на страницу с firebug. В этом сценарии умеренно осведомленный пользователь может легко предоставить себе права администратора. Я не думаю, что вам когда-либо следует полагаться на чисто клиентскую модель безопасности.

1
ответ дан 26 October 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: