Как именно функционируют эти фрагменты кода?

Ранее я читал о том, как «Создать библиотеку JavaScript», и наткнулся на эти фрагменты кода, от которых мне захотелось вырвать

Вот код, который сбил меня с толку:

if (window === this) {
    return new _(id);
}

_(id) - это просто имя функции, в которой содержится этот код. Вот остальная часть кода, если вам нужно просмотреть его самостоятельно.

function _(id) {

// About object is returned if there is no 'id' parameter
var about = {
    Version: 0.5,
    Author: "Michael Jasper",
    Created: "Fall 2010",
    Updated: "23 November 2011"
};

if (id) {

    // Avoid clobbering the window scope:
    // return a new _ object if we're in the wrong scope
    if (window === this) {
        return new _(id);
    }

    // We're in the correct object scope:
    // Init our element object and return the object
    this.e = document.getElementById(id);
    return this;
  } else {
    // No 'id' parameter was given, return the 'about' object
    return about;
  }
};

Я никогда раньше не видел 'return new function', но хотел бы понять, как она работает.

Другой фрагмент кода:

_.prototype = {
  hide: function () {
          this.e.style.display = 'none';
          return this;
  }

  show: function () {
           this.e.style.display = 'inherit';
           return this;
  }
};

Я знаю, что этот код добавляет новые методы к объекту _, но почему они "возвращают это"? Я пробовал без этого, и все работало нормально.

И последнее, ссылка на статью http://www.mikedoesweb.com/2012/creating-your- own-javascript-library/

7
задан W3Geek 15 June 2012 в 04:18
поделиться