Как называется функция / концепция / технология Javascript, позволяющая добавить новую функцию (в данном случае .select2 ()) в существующий объект?
Что ж, JavaScript имеет прототипное наследование, что означает, что объекты могут наследовать методы от других объектов. Теперь, когда вы можете добавлять свойства к любому объекту в любое время, это на самом деле не функция, а скорее результат базового языкового дизайна. На других языках они будут называться функции расширения
const prototype = { };
const instance = Object.create(prototype);
console.log(instance.method); // does not exist yet
prototype.method = function() { };
instance.method(); // exists now
Теперь для HTML элементов, которые также применяются: они наследуют класс Element
, и вы можете легко добавить методы к его прототипу:
Element.prototype.method = function() {
console.log(this);
}
document.body.method();
В вашем случае у вас нет HTML-элемента напрямую, а есть объект экземпляра jquery, который оборачивается вокруг объекта нативного элемента. Однако базовая концепция наследования применима и к этому, что означает, что добавление методов к $.fn
отражается на всех экземплярах jQuery. Вот что делает плагин.