Пожалуйста, помогите мне, я действительно запутался с slice()
JavaScript. Я прочитал документацию Array.prototype.slice()
. Он сказал:
Для ссылок на объекты (а не на фактические объекты) slice копирует ссылки на объекты в новый массив. И исходный, и новый массив ссылаются на один и тот же объект. Если ссылочный объект изменяется, изменения видны как новому, так и исходному массивам.
В этом коде я использую slice()
для реального объекта, но он все еще возвращает ссылку
var arObj = [
{ 'name': 'Jon', 'age': 24 },
{ 'name': 'Mark', 'age': 32 },
{ 'name': 'Kacy', 'age': 22 }
];
// use splice to copy array of objects into second variable
var ar2 = arObj.slice();
// modify property value in copy
ar2[1].name = 'Bill';
// view original (also modified)
console.log( arObj[1].name ); // Bill
И второй код, это не так:
let data = this.state.data.slice(); //If you don't have the slice function, it will return a reference.
console.log(this.state.data);
data.reverse();
если я попытаюсь изменить или изменить значение данных, значение (this.state.data) не изменится. Это структура this.state.data:
https://i.stack.imgur.com/94emV.png