Реализация оператора new в JavaScript
Вот небольшой фрагмент кода, который очень грубо реализует логику работы оператора new в JavaScript.
function newOperator(Constr, args) {
var thisValue = Object.create(Constr.prototype); // (1)
var result = Constr.apply(thisValue, args);
if (typeof result === 'object' && result !== null) {
return result; // (2)
}
return thisValue;
}
- Прототип нового объекта, порождаемого конструктором
Constr
, — этоConstr.prototype
. - В реализации конструктора можно переопределить стандартное поведение, когда
оператор
new
возвращаетthis
, возвращая объект. Это может быть полезным, когда конструктор должен вернуть инстанс суб-конструктора.
20.01.2014
Facebook
Twitter
Вконтакте
Google+
Похожие статьи:
-
Анализ покрытия JavaScript-кода тестами
Вместе с нашими друзьями: Mocha, JSCoverage, Coveralls и Travis
-
Паттерн «объект-представление»
7 паттернов для рефакторинга JavaScript-приложений
-
Паттерн «объект-запрос»
7 паттернов для рефакторинга JavaScript-приложений
-
ASI и мистические знаки перед IIFE в JavaScript
Сжигаем ведьм, например
-
Паттерн «объект-форма»
7 паттернов для рефакторинга JavaScript-приложений
-
Паттерн «объект-сервис»
7 паттернов для рефакторинга JavaScript-приложений
-
Паттерн «объект-значение»
7 паттернов для рефакторинга JavaScript-приложений
«Как рушатся комплексные системы», Ричард И. Кук
О фундаментальных проблемах больших запутанных систем
7 паттернов для рефакторинга JavaScript-приложений
Перевод отличной серии статей о проектировании и рефакторинге проектов
Музыка для работы
Мои плейлисты: теплый glitch, нежные девичьи голоса, интересная электроника и chillwave
Ссылколог
Коллекционирую полезные ссылки