Массив.at

Метод массива `at` может возвращать элемент в любой позиции.

const a = [1,2,3,4,5]

Раньше, чтобы найти последний элемент массива, мы делали:

a[a.length -1] ---> 5

Вместо этого мы можем использовать at

a.at[-1] ---> 5
a.at[-2] ---> second last element 4

структурированный клон

Javascript structuredClone используется для глубокого копирования объекта.

const a = { name: "Edwin", weapons: { main: "sword", alt: "knife"} }

const b = structuredClone(a) 
//It creates a new object and doesn't have old reference.

b.weapons.main = "Rifle";

console.log(b) ---> { name: "Edwin", weapons: { main: "Rifle", alt: "knife"} }
console.log(a) ---> { name: "Edwin", weapons: { main: "sword", alt: "knife"} }

structuredClone и оператор спреда

const a = { name: "Edwin", weapons: { main: "sword", alt: "knife"} }

const b = {...a} 
//It creates a shallow copy. Inner objects have the same refernence.

b.weapons.main = "Rifle";

console.log(b) ---> { name: "Edwin", weapons: { main: "Rifle", alt: "knife"} }
console.log(a) ---> { name: "Edwin", weapons: { main: "Rifle", alt: "knife"}

//Here the both object a and b changes when using spread operator.

Следовательно, использование `spread` может иногда вызывать ошибки, и давайте соответственно изменим `structedClone`.

Примечание. Глубокое копирование всегда выполняется медленнее поверхностного копирования.