# Добавить метод объекту 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'`
← →
↑