Почему MS Ajax использует именованные функции JS при создании объектных методов? - PullRequest
0 голосов
/ 26 февраля 2010

Глядя на библиотеки MS Ajax, я замечаю, что они определяют методы объекта следующим образом:

    addErrors: function Sys_Mvc_FormContext$addErrors(messages) {
    /// <param name="messages" type="Array" elementType="String">
    /// </param>
    if (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(messages)) {
        Array.addRange(this._errors, messages);
        this._onErrorCountChanged();
    }

Почему названная функция (Sys_Mvc_FormContext $ addErrors (messages))? Почему бы просто не использовать:

addErrors: function(messages) {

Не думаю, что видел это за пределами MS Ajax ...

1 Ответ

2 голосов
/ 26 февраля 2010

Имена функций именования особенно полезны для целей отладки, поэтому вы можете видеть в стеке вызовов, где именно вы находитесь, и все действительные имена функций.

Также полезно для рекурсии, поскольку идентификатор выражения функции доступен только в теле функции.

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

Рекомендуемая статья:

...