Есть элементы ['a', 'b', 'c']
массив ссылочный объект o
ключи? Или это новые экземпляры строк?Ли Object.keys копирует имена свойств по ссылке или создает новую строку?
let o = {a: 10, b: 20, c: 30};
let keys = Object.keys(o); // ['a', 'b', 'c']
Есть элементы ['a', 'b', 'c']
массив ссылочный объект o
ключи? Или это новые экземпляры строк?Ли Object.keys копирует имена свойств по ссылке или создает новую строку?
let o = {a: 10, b: 20, c: 30};
let keys = Object.keys(o); // ['a', 'b', 'c']
Если они были ссылками, изменение одного из них в массиве keys
также привело бы к изменению имени свойства объекта. Как вы можете видеть здесь, это не так.
let o = {a: 10, b: 20, c: 30};
let keys = Object.keys(o); // ['a', 'b', 'c']
keys[0]='d';
let keys2 = Object.keys(o);
console.log(keys2);
Правда. Однако, это странно. Я обнаружил, что 'React Redux' рассматривает ключи объектов, изменяемые в этой операции, и перезагружает компоненты. Вот почему я задаю вопрос. – Green
@Green, в вашем вопросе нет «Реагировать» и «Редюкс». В этом случае свойства, на которые вы ссылаетесь, определяются методами setter и getter, определенными [дескриптором свойства] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/ defineProperty). –
Как вы можете прочитать о Object.keys
метод here:
В Object.keys() возвращает массив собственных перечислимых свойств заданного объекта, в том же порядке, что обеспечивается для ... in loop (разница в том, что цикл for-in перечисляет свойства в цепочке прототипов).
Итак, вы задаете вопрос, Свойства объекта Object.keys по ссылке или создать новый объект?, не связано с тем, что делает этот метод. Этот метод не копирует свойства. Как упоминалось выше, возвращает массив, который содержит имя собственных перечислимых свойств объекта.
Они просто строковые значения, примитивный тип, а не объект. –
@ Y.C., Да, но не для 'реакция-редукция'. Он считает их изменчивыми как-то и перезагружает компоненты. – Green