JQuery дизайн JavaScript: сам выполняющий функциональный или литерал объектов? [закрытый]

Вы можете использовать реагирующую речь npm как для преобразования текста в речь, так и для преобразования речи в текст.

Это репозиторий GitHub: https://github.com/andrewkeig/react-speech

8
задан steve_c 9 October 2008 в 18:53
поделиться

3 ответа

Поскольку я уже некоторое время работаю с jQuery, Я выбрал стандартный шаблон, который мне подходит.

Это комбинация шаблона модуля YUI с добавлением небольшого количества шаблона плагина jQuery. . В итоге мы использовали самовыполняющийся шаблон закрытия. Это дает несколько преимуществ:

  1. Он сводит код к минимуму
  2. Он обеспечивает разделение поведения от представления
  3. Он обеспечивает закрытие, предотвращающее конфликты имен

Вот как это выглядит:

;(function($) {        
    var myPrivateFunction = function() {
    };

    var init = function() {
        myPrivateFunction();
    };

    $(init);
})(jQuery);

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

Конечно, мы могли бы написать встроенный метод init, не определяя переменную для функции. Мы согласились с тем, что явное определение функции init сделало код более понятным для читателей.

Что произойдет, если мы захотим совместно использовать функции между страницами / внешними js-файлами? Мы просто подключаемся к существующему механизму, который jQuery предоставляет для расширения самого объекта jQuery - функции расширения.

Если функции статические, мы используем $ .extend, а если они работают с обернутым набором, мы используем $. fn.extend.

Надеюсь, это кому-то поможет.

Конечно, мы могли бы написать метод init встроенным, без определения переменной для функции. Мы согласились с тем, что явное определение функции init сделало код более понятным для читателей.

Что произойдет, если мы захотим разделить функции между страницами / внешними js-файлами? Мы просто подключаемся к существующему механизму, который jQuery предоставляет для расширения самого объекта jQuery - функции расширения.

Если функции статические, мы используем $ .extend, а если они работают с обернутым набором, мы используем $. fn.extend.

Надеюсь, это кому-то поможет.

Конечно, мы могли бы написать метод init встроенным, без определения переменной для функции. Мы согласились с тем, что явное определение функции init сделало код более понятным для читателей.

Что произойдет, если мы захотим совместно использовать функции между страницами / внешними js-файлами? Мы просто подключаемся к существующему механизму, который jQuery предоставляет для расширения самого объекта jQuery - функции расширения.

Если функции статические, мы используем $ .extend, а если они работают с обернутым набором, мы используем $. fn.extend.

Надеюсь, это кому-то поможет.

Что произойдет, если мы захотим разделить функции между страницами / внешними js-файлами? Мы просто подключаемся к существующему механизму, который jQuery предоставляет для расширения самого объекта jQuery - функции расширения.

Если функции статические, мы используем $ .extend, а если они работают с обернутым набором, мы используем $. fn.extend.

Надеюсь, это кому-то поможет.

Что произойдет, если мы захотим разделить функции между страницами / внешними js-файлами? Мы просто подключаемся к существующему механизму, который jQuery предоставляет для расширения самого объекта jQuery - функции расширения.

Если функции статические, мы используем $ .extend, а если они работают с обернутым набором, мы используем $. fn.extend.

Надеюсь, это кому-то поможет.

10
ответ дан 5 December 2019 в 12:14
поделиться

Я использую YUI и jQuery при разработке (виджеты YUI и несколько функций удобства, селекторов jQuery и JavaScript "расширения"), и общий шаблон JavaScript, который я использую, является этим:

/*global YAHOO, $ */

// Create the public-scope accessable namespace for this page
YAHOO.namespace('Project');

YAHOO.Project.page = function() {
    // Private members

    var self = {};

    // Public members
    var pub = {};

    pub.init = function() {

    };

    return pub;
} ();

// When the DOM is loaded, initialize this module
$(document).ready(YAHOO.Project.page.init);

Теперь ясно можно удалить YAHOO.namespace () вызов, если Вы не хотите использовать YUI, но это - основная схема. Это использует нотацию литерала объектов, но также и позволяет Вам определять частные собственности и методы.

Просто помните это при вызове членов парламента, не занимающих официального поста или ссылке на частные переменные для ссылки на них как self.funcName(). Можно определить их за пределами self объект, но затем Вы получаете mismash везде в Вашем объекте, где Вы пытаетесь выяснить если size_of() закрытый метод или определенный глобально где-то в другом месте.

3
ответ дан 5 December 2019 в 12:14
поделиться

Я обычно следую за опытным шаблоном:

MyFunction = function(param1, param2)
{
   this.property1 = param1;
   // etc.
}

MyFunction.prototype =
{
    memberOne: function(param1)
    {
       // ...
    },

    memberTwo: function(param2)
    {
    }
}

Вы получаете что-то "конструктор" (сама функция) и инкапсулировавшие "методы" и "поля".

Для кого-то легче, кто привык к основанным на классах языкам OO :)

1
ответ дан 5 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

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