Разница в настройках шаблона Javascript - PullRequest
1 голос
/ 03 ноября 2011

Я работаю над небольшим одностраничным сайтом прокрутки с использованием jQuery.Будучи новичком в javascript, я сталкивался с множеством различных способов организации своего кода другими разработчиками.С простым сайтом с небольшим взаимодействием javascript мне интересно, в чем разница между следующими фрагментами кода, которые я видел на других сайтах:

Первый

var NS = NS || NS
NS = {
    init: function() {},
    buildNav: function() {},
    scrollToSection: function() {}
}

$( document ).ready( NS.init() );

Второй

var NS = NS || NS;
NS = new (function() {
    var name = 'Basic';
    var self = this;
    self.getName = function() { return name; };
});
NS.Home = new (function() {
    // variables..are these private or public
    var self = this;
    self.init = function() {
      // initiate
    }

    self.scrollToSection = function() {
      // scroll section
    }

    // public or private method?
    function buildNav() {
    }
});

$(document).ready(function() { NS.Home.init(); });

Третий

var NS = NS || NS;

NS.Home = new function() {
  var foo = $('#htmlelement');

  this.scrollToSection() {
    // scroll section
  };
  this.init = function() {
    buildNav();
  };

  function buildNav() { }
}
$( document ).ready( NS.Home.init() );

Далее

(function($){
    $.fn.homepage = function() { 
        function buildNav() { }
        function init () { } 
    };
    $.fn.otherpage = function() {
        function doSomething() { }
        function init () { }
     }
})(jQuery);

$(document).ready(function () {
    $('#homepage-element').homepage();
}

Ответы [ 2 ]

1 голос
/ 03 ноября 2011
  1. var NS = NS || NS; Эта строка инициализирует NS значением по умолчанию, если переданное значение является нулевым или неопределенным. Все три создают одноэлементный объект NS, который действует как пространство имен.
  2. Первый, Второй и Третий объясняют различные стили практики объектно-ориентированного программирования.
  3. Во-первых, NS-объект создается с помощью литеральной нотации объекта, и поэтому все его функции являются общедоступными, и переменная, которую вы будете создавать для NS, также будет общедоступной.
  4. Второе и третье очень похожи, за исключением того, что второе более грязное, а третье более четкое. Second и Third оба объявляют некоторые открытые методы объекта NS (созданные с помощью анонимного конструктора) и некоторые частные функции.
  5. Второй и третий объявляют свойство динамически с помощью функции анонимного конструктора.

Вам следует прочитать несколько статей об объектно-ориентированном JavaScript и шаблонах проектирования. Начните с этого

0 голосов
/ 03 ноября 2011

Взгляните на содержание, представленное здесь Илия Усадьба.Несколько действительно хороших презентаций и контента по лучшим практикам javascript.

...