Object.keys是通过引用复制属性名还是创建新字符串?

时间:2017-01-22 07:42:04

标签: javascript arrays pass-by-reference

['a', 'b', 'c']数组引用对象o键的项目是什么?或者他们是全新的字符串实例?

let o = {a: 10, b: 20, c: 30};
let keys = Object.keys(o); // ['a', 'b', 'c']

2 个答案:

答案 0 :(得分:1)

您可以阅读Object.keys方法here

  

Object.keys()方法返回给定对象自己的数组   可枚举的属性,与a提供的顺序相同   for ... in循环(不同之处在于for-in循环枚举   原型链中的属性也是如此。

所以你提问, Object.keys是通过引用复制属性还是创建一个新属性?,与此方法的作用无关。此方法不会复制属性。如上所述,返回一个数组包含对象的自身可枚举属性的名称

答案 1 :(得分:1)

如果它们是引用,则在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);