Object.keys 是通过引用复制 属性 名称还是创建新字符串?
Does Object.keys copy property names by reference or create a new string?
['a', 'b', 'c']
数组的项目是否引用对象 o
键?或者它们是全新的字符串实例?
let o = {a: 10, b: 20, c: 30};
let keys = Object.keys(o); // ['a', 'b', 'c']
你可以阅读 Object.keys
方法 here:
The Object.keys() method returns an array of a given object's own
enumerable properties, in the same order as that provided by a
for...in loop (the difference being that a for-in loop enumerates
properties in the prototype chain as well).
所以您的问题是,Object.keys 是通过引用复制属性还是创建新的 属性?,与此方法的作用无关。此方法不复制属性。正如上面提到的,returns一个数组,包含对象自身的可枚举属性的名称。
如果它们是引用,更改 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);
['a', 'b', 'c']
数组的项目是否引用对象 o
键?或者它们是全新的字符串实例?
let o = {a: 10, b: 20, c: 30};
let keys = Object.keys(o); // ['a', 'b', 'c']
你可以阅读 Object.keys
方法 here:
The Object.keys() method returns an array of a given object's own enumerable properties, in the same order as that provided by a for...in loop (the difference being that a for-in loop enumerates properties in the prototype chain as well).
所以您的问题是,Object.keys 是通过引用复制属性还是创建新的 属性?,与此方法的作用无关。此方法不复制属性。正如上面提到的,returns一个数组,包含对象自身的可枚举属性的名称。
如果它们是引用,更改 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);