Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
4 / 4 / 3
Регистрация: 15.12.2015
Сообщений: 184

Как правильно написать многоуровневую функцию

21.08.2017, 11:38. Показов 723. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не знаю правильно ли сформулировал вопрос. Я недавно занялся изучением JS.
Объясню на пальцах чего я хочу...
У меня есть страница на которой есть 2 боковые панели: правая и левая. Сначала я написал 4 метода для открытия и закрытия правой и левой панели (2 функции открытия и 2 - закрытия). Потом я захотел в некою единую конструкцию. Сделал 2 вырианта
1 Вариант (на базе JSON-объекта):
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var SideBar3 = {
  Left : {
      Open : function() {
       alert( "Left Open3");
      },
      Close : function() {
       alert( "Left Close3");
      }     
    },
  Right : {
      Open : function() {
       alert( "Right Open3");
      },
      Close : function() {
       alert( "Right Close3");
      }     
    }  
}
2 Вариант (на базе составной многоуровневой функции):
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SideBar4 = new function()  {
  this.Left = new function()  {
      this.Open = function() {
       alert( "Left Open4");
      };
      this.Close = function() {
       alert( "Left Close4");
      };     
  };
  this.Right= new function()  {
      this.Open = function() {
       alert( "Right Open4");
      };
      this.Close = function() {
       alert( "Right Close4");
      };
    };
};
Использование соответственно (для примера):
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<button onclick = "SideBar3.Left.Open()">Side Bar3 > Left > Open</button>
<button onclick = "SideBar3.Left.Close()">Side Bar3 > Left > Close</button>
 
<button onclick = "SideBar3.Right.Open()">Side Bar3 > Right > Open</button>
<button onclick = "SideBar3.Right.Close()">Side Bar3 > Right > Close</button>   
 
 
<button onclick = "SideBar4.Left.Open()">Side Bar4 > Left > Open</button>
<button onclick = "SideBar4.Left.Close()">Side Bar4 > Left > Close</button>
 
<button onclick = "SideBar4.Right.Open()">Side Bar4 > Right > Open</button>
<button onclick = "SideBar4.Right.Close()">Side Bar4 > Right > Close</butto

Вопрос к знатокам:
1. Правильной ли дорогой иду?
2. Можно ли (имеет ли смысл) так делать?
3. Как сделать красивей или правильней?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2017, 11:38
Ответы с готовыми решениями:

Как правильно написать данную функцию?
В общем суть такова, при нажатии по карте - появляется модальное окно, где есть кнопка submit, но в данном коде с каждым нажатием...

Как правильно написать функцию?
Подскажите, пожалуйста, как правильно написать функцию, вычисляющую интервал времени между настоящим (current) и прошедшим временем...

Как правильно написать функцию?
Необходимо написать функцию кот вычисляет интервал времени: void DigitalTime::interval_since(const DigitalTime&amp; a_previous_time,...

1
707 / 309 / 191
Регистрация: 05.03.2015
Сообщений: 822
26.08.2017, 22:54
Я бы полностью разделил эти 2 компонента для возможного будущего переиспользования. Получилось бы нечто такое:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var SidebarLeft = (function () { 
    var my = {}, 
        privateVariable = 1; 
 
    function privateMethod() { 
        // ... 
    } 
 
    my.moduleProperty = 1; 
    my.moduleMethod = function () { 
        // ... 
    }; 
 
    return my; 
}());
Таким образом мы явно экспортируем нужные методы анонимной функции и решаем проблему с неймспейсом. В итоге получается полноценный (почти) модуль. В вашем случае, это выглядело бы как-то так:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var SidebarLeft = (function () { 
    var my = {};
 
    my.Open= function () { 
        // ... 
    }; 
    my.Close = function () { 
        // ... 
    }; 
 
    return my; 
}());
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.08.2017, 22:54
Помогаю со студенческими работами здесь

Как правильно написать функцию
Помогите, пожалуйста, как правильно написать функцию? y=ln(x+z)+x/(x+z)

Как правильно написать функцию
Есть УФ, на ней таблица, поле ввода и кнопка &quot;Найти&quot; Мне надо, чтоб при нажатии на кнопку &quot;Найти&quot;, заполнялась таблица, но вот...

Как правильно написать функцию
Доброго времени суток. Помогите разобраться. есть такая функция: void auto_motion_down(int m) { int x; if (A&gt;83) { ...

Как правильно написать функцию?
Привет :) Начал изучение функций в С++. Написал первую, и тут же начались проблемы. Вот код. Помогите пожалуйста #include...

как написать правильно такую функцию
добрый вечер как написать правильно такую функцию: y3 = ctg ( x4 +4x) + ch (0.5 x), 0&lt;x&lt;=0.5 sh (1 /x+x3+ 3x), x&gt;1 -3,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru