Pull to refresh

Comments 3

Какой-то вредный код. Во-первых внутри функция-инициалиазатор _init выполняет несколько функций сразу:
1. Инициализирует внутреннее состояние.
2. Выполняет вставку элемента в dom.

Поэтому лучше разбить: отдельно _init, отдельно вставка в dom,
Зачем вообще нужен метод _init? Если у нас уже есть конструктор? Зачем пихать в this message? message короткоживущий объект внутри верстки, зачем он нам вообще нужен?

Зачем вообще засорять window? Есть уже нормальные модульные системы, которые работают, забудьте window, не путайте новичков. Используйте CommonJS или лучше UMD, или SystemJS.

Таким образом:
;(function( window ) {

  'use strict';

  /**
   * SimpleAlert function
   */
  function SimpleAlert( ) {
    this.component = document.getElementById("component");
    this.box = document.createElement("div");
    this.box.className = "simple-alert";
  }

SimpleAlert.prototype.render = function (msg) {
    msg = msg || this.box.innerHTML || '';
    this.box.innerHTML = msg;
    this.component.appendChild( this.box );
};

  /**
   * Добавляем SimpleAlert в глобальную область видимости
   */
  window.SimpleAlert = SimpleAlert;

})( window );


;(function() {
  var default_btn = document.getElementById( "default" );
  default_btn.addEventListener( "click", function() {
    var default_alert = new SimpleAlert();
   default_alert.render("Hello World!");
  } );
})();


З.Ы. Код не проверил, поэтому возможны ошибки. Просто показать направление мысли.
Скажите, что значит ";" перед анонимной функцией? Еще встречал "+" в некоторых плагинах. Подозреваю, что эти символы имеют схожий смысл в данной ситуации.
Смысл; это избежать проблем при минификации файлов, если кто-то из соседнего файла забыл поставить; а умный минификатор пропустил предупреждение мимо ушей.
Пример:
Дано:
var a = 10
(function(){})() 


После минификации:
var a = 10(function(){})() 


А если мы поставим; то будет так:
var a = 10;(function(){})()


Вы говорите о другом случае об IIFE, подробнее о способах их написания в п.6 Javascript F.A.Q.:
habrahabr.ru/post/124327/

Sign up to leave a comment.

Articles