Добавить метод объекту JS

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

let obj = { name: 'john', surn: 'smit', };

Давайте добавим новый метод к этому объекту с помощью различных способов.

Способ 1. Напрямую

Можно добавить метод сразу при объявлении объекта:

let obj = { name: 'john', surn: 'smit', full: function() { return this.name + ' ' + this.surn; } };

Вызовем наш метод:

console.log(obj.full()); // выведет 'john smit'

Способ 2. После объявления

Можно добавить метод после объявления объекта. Давайте сначала объявим объект:

let obj = { name: 'john', surn: 'smit', full: function() { return this.name + ' ' + this.surn; } };

А теперь добавим новый метод:

let obj.full = function() { return this.name + ' ' + this.surn; };

Вызовем наш метод:

console.log(obj.full()); // выведет 'john smit'

Способ 3. Через Object.defineProperty

Метод Object.defineProperty также позволяет добавить новый метод к объекту. Сделаем это:

Object.defineProperty(obj, 'full', { get: function() { return this.name + ' ' + this.surn; } });

Вызовем наш метод:

console.log(obj.full()); // выведет 'john smit'

Способ 4. Через Object.assign

Метод Object.assign позволяет нам объединить несколько объектов в один. Мы можем использовать его для добавления методов в существующий объект. Давайте посмотрим на практике. Пусть у нас есть следующий объект:

let obj = { name: 'john', surn: 'smit', };

Пусть у нас также есть функция:

function full() { return this.name + ' ' + this.surn; }

Объединим вместе наш объект и новый объект с нашей функцией:

obj = Object.assign({}, obj, {full: full});

Либо можно воспользоваться анонимной функцией:

obj = Object.assign({}, obj, {full: function() { return this.name + ' ' + this.surn; }});

Вызовем наш метод:

console.log(obj.full()); // выведет 'john smit'