Skip to main content

Методи об'єкта після створення

Короткa відповідь

Так, можна! Ти можеш просто присвоїти об'єкту нову властивість, значення якої - функція.


Приклад

javascript
const user = { name: 'Тим' }; // додаємо метод після створення user.sayHi = function() { console.log(`Привіт, ${this.name}!`); }; user.sayHi(); // "Привіт, Тим!"

Ми додали метод sayHi уже після оголошення об'єкта - і тепер він став повноцінним методом об'єкта.


Можна додавати стрілкові функції (але обережно)

javascript
user.sayBye = () => { console.log(`Бувай, ${user.name}!`); }; user.sayBye(); // "Бувай, Тим!"

Різниця:

  • function() має свій this (вказує на сам об'єкт при виклику як user.sayHi());
  • стрілкова функція => не має власного this, тому всередині неї this не буде посилатися на об'єкт.

Зазвичай для методів використовують звичайні функції, а не стрілкові.


Приклад із кількома методами

javascript
const calculator = {}; calculator.add = function(a, b) { return a + b; }; calculator.multiply = function(a, b) { return a * b; }; console.log(calculator.add(2, 3)); // 5 console.log(calculator.multiply(2, 3)); // 6

Методи можна додавати скільки завгодно і коли завгодно.


Можна додавати через Object.assign()

javascript
const user = { name: 'Тим' }; Object.assign(user, { sayHi() { console.log(`Привіт, ${this.name}`); }, sayBye() { console.log(`Бувай, ${this.name}`); } }); user.sayHi(); // "Привіт, Тим" user.sayBye(); // "Бувай, Тим"

Зручно, якщо потрібно додати одразу кілька методів.


Можна додати метод у прототип (пошириться на всі об'єкти)

javascript
function User(name) { this.name = name; } User.prototype.sayHi = function() { console.log(`Привіт, ${this.name}`); }; const tim = new User('Тим'); const oleh = new User('Oleh'); tim.sayHi(); // "Привіт, Тим" oleh.sayHi(); // "Привіт, Oleh"

Цей спосіб додає метод усім екземплярам, створеним через new User().


ПІДСУМОК

СпосібКоли використовуватиПриклад
obj.method = function() {}Додати один методuser.sayHi = ...
Object.assign(obj, { ... })Додати кілька методівObject.assign(user, { sayHi, sayBye })
prototype.method = ...Додати метод усім екземплярамUser.prototype.sayHi = ...

В одній фразі:

Так, у JavaScript можна додавати методи в об'єкт у будь-який момент - просто присвой йому функцію, і вона стане методом:

javascript
obj.newMethod = function() { ... };

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.