Ранее я читал о том, как «Создать библиотеку 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/