Непонятный шаблон программирования javascript / jquery

0

Я работаю над веб-проектом, где на страницах jsp пользовательского интерфейса. Все методы jquery/javascript вызываются через этот шаблон

A.b.c.d.methodName() 

На странице jsp импортировано много файлов.js. Поэтому я должен искать в Eclipse IDE для отслеживания файла js метода.

В файле js, который имеет совсем другое имя, а не "Abcd", метод объявляется как

methodName: function()
{ // logic }

Может кто-нибудь сказать мне, что это за стиль/шаблон использования jquery.

  • 0
    Просто предложение, но вы можете пометить это «Eclipse», так как у меня есть ощущение, что вы пытаетесь заставить Eclipse понять вложение.
Теги:
user-interface

2 ответа

1
Лучший ответ

JavaScript никогда не ищет имена файлов, "пространство имен", который вы видите, достигается объектами, вложенными друг в друга в качестве свойств.

Например, если вы создаете такой объект, как:

var A = {
    b: {
        c: {
            d: {
                methodName: function () {
                    console.log('What a nice method!');
                }
            }
        }
    }
};

Вы можете назвать это следующим образом:

A.b.c.d.methodName();

Или вы можете добавлять методы позже в свой код:

var irrelevantName = function () {
    console.log('This method is even nicer');
};

A.b.c.method2 = irrelevantName;

И назовите его:

A.b.c.method2();

Существует широко используемый метод расширения, который всплыл во множестве инфраструктур JavaScript, таких как jQuery или MooTools. Это обеспечивает возможность безопасного расширения объекта при сохранении исходных значений, если они присутствуют.

Вы можете использовать jQuery, например:

$.extend(A.b.c.d, {
    method3: function () {
        console.log('An other nice method');
    }
});

И, как вы ожидаете, его можно назвать:

A.b.c.d.method3();

Библиотеки JavaScript обычно используют пространство имен: они создают какой-то объект и заполняют его всеми их методами. Таким образом, они не загрязняют глобальное пространство имен своими методами.

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

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

В сноске: я не уверен, как инструмент Eclipse поддерживает JS, но поскольку это не тривиальная проблема (структура объекта может быть изменена "на лету"), я не удивлюсь, если Eclipse не понимает пространство имен JavaScript.

  • 0
    Хороший ответ, спасибо.
  • 0
    большое спасибо за ответ :)
0

Похоже, у него есть своего рода пространство имен. Возможно, код может быть шаблоном AMD? Но опять же, если это JSP, это может быть старым....

  • 0
    большое спасибо за ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню