Ответ
Добавление функциональности в объект — это расширение его возможностей путем добавления новых методов или свойств. В JS это можно сделать несколькими способами:
- Через прототип (для конструкторов):
function Person(name) {
this.name = name;
}
Person.prototype.greet = function() {
console.log(`Hello, ${this.name}!`);
};
- Прямое добавление (для конкретного объекта):
const user = { name: 'Alex' };
user.sayHi = function() {
console.log(`Hi, ${this.name}`);
};
- Использование классов (ES6+):
class User {
constructor(name) {
this.name = name;
}
// Добавляем метод
greet() {
console.log(`Welcome, ${this.name}!`);
}
}
Важно: добавление методов через прототип экономит память, так как все экземпляры разделяют одну функцию, а не создают её копии.
Ответ 18+ 🔞
Да ты посмотри, какая хуйня творится! Сидишь ты такой с объектом, а он тебе, блядь, нихуя не умеет. Как мартышлюшка с гранатой — вроде держит что-то, а применить нихуя. Так вот, чтобы эту тварь научить чему-то, надо ей функциональность добавить, понимаешь? Новые методы, свойства — чтобы не просто так болталась, а дело делала.
Смотри, как это бывает, на примере человека, блядь.
Вариант первый, классический, через прототип. Это как если б ты всем своим родственникам разом мозги впихнул, чтобы они все одной фигней заниматься умели. Экономия памяти — овердохуища!
function Person(name) {
this.name = name;
}
// А тут, сука, добавляем всем, кто от этого конструктора родится, новый скилл
Person.prototype.greet = function() {
console.log(`Hello, ${this.name}!`);
};
Теперь любого такого Person-а создашь — он уже с методом greet идёт, готовый тебя поприветствовать. Удобно, блядь!
Вариант второй, для одиночек. Вот есть у тебя один конкретный объект, пользователь. И ты ему лично, в единственном экземпляре, приделываешь новую пиздюлину.
const user = { name: 'Alex' };
// Смотри-ка, а давай-ка ты, user, научишься говорить "Хай"
user.sayHi = function() {
console.log(`Hi, ${this.name}`);
};
Всё, теперь этот конкретный user умеет то, чего другие объекты могут и не уметь. Как хитрая жопа — особенная.
Ну и третий, современный, через классы. Выглядит прилично, как будто не ты это из подручных средств собирал.
class User {
constructor(name) {
this.name = name;
}
// И сразу, блядь, в комплекте метод идёт
greet() {
console.log(`Welcome, ${this.name}!`);
}
}
Красота, ёпта! Создал инстанс — и он уже полностью функциональный, не надо по кустам методы пихать.
Запомни главное, чувак: если ты через прототип добавляешь — это как на заводе, все детали с одним и тем же движком выходят. Памяти жрёт меньше, все экземпляры одну и ту же функцию используют, а не каждый свою личную копию таскает. Умно, сука! А если напрямую в объект — то это ручная работа, штучный товар. Выбирай, что тебе нужнее.