@Alex_87

Что делает эта строчка: return new $.prototype.init(selector);?

Прошу помочь разобраться с следующим кодом. Это код выступает ядром по созданию своей библиотеки.

не понятно, что делают эти строчки:
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 $;
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
zkrvndm
@zkrvndm
Архитектор решений
В прототип функции пишутся, чтобы их (функции) можно было вызывать у найденных элементов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
27 нояб. 2024, в 13:07
10000 руб./за проект
27 нояб. 2024, в 12:53
70000 руб./за проект
27 нояб. 2024, в 12:50
25000 руб./за проект