gpt4 book ai didi

javascript - Reflect.ownKeys(obj) 和 Object.keys(obj) 有什么区别?

转载 作者:IT王子 更新时间:2023-10-29 03:09:29 27 4
gpt4 key购买 nike

在真实的简单案例中测试它们会产生相同的输出:

const obj = {a: 5, b: 5};
console.log(Reflect.ownKeys(obj));
console.log(Object.keys(obj));

// Result
['a', 'b']
['a', 'b']

什么时候 Reflect.ownKeys(obj) 产生的输出不同于 Object.keys(obj)

最佳答案

Object.keys()返回字符串的数组,这些字符串是对象自己的可枚举 属性。

Reflect.ownKeys(obj)返回相当于:

Object.getOwnPropertyNames(target).
concat(Object.getOwnPropertySymbols(target))

Object.getOwnPropertyNames() 方法返回直接在给定对象上找到的所有属性(enumerable 或不)的数组。

Object.getOwnPropertySymbols() 方法返回所有 symbol 的数组直接在给定对象上找到的属性。

var testObject = {};
Object.defineProperty(testObject, 'myMethod', {
value: function () {
alert("Non enumerable property");
},
enumerable: false
});

//does not print myMethod since it is defined to be non-enumerable
console.log(Object.keys(testObject));

//prints myMethod irrespective of it being enumerable or not.
console.log(Reflect.ownKeys(testObject));

关于javascript - Reflect.ownKeys(obj) 和 Object.keys(obj) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449045/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com