Прошу помочь разобраться с следующим кодом. Это код выступает ядром по созданию своей библиотеки.
не понятно, что делают эти строчки:
1) return new $.prototype.init(selector);(почему используется prototype)
Cкажем здесь, можно написать по логике и просто return new $.init(selector);
Ну да, он будет напрямую лежать у объекта $, в чём проблема? Ведь тот же метод init больше нигде в наследуемых методах не используется.
Как я понимаю, каждый раз при использовании $ будет создаваться новый объект, который будет запускать функцию init, записанную в прототипе объекта.
Но вопрос, почему просто не записать функцию init в самом объекте $, а не в его прототипе?
2) $.prototype.init.prototype = $.prototype;
3) window.$ = $;
const $ = function(selector) {
return new $.prototype.init(selector);
};
$.prototype.init = function(selector) {
if (!selector) {
return this; // {}
}
Object.assign(this, document.querySelectorAll(selector));
this.length = document.querySelectorAll(selector).length;
return this;
};
$.prototype.init.prototype = $.prototype;
window.$ = $;
export default $;