2022-08-24 Reflect.ownKeys和Object.keys方法对比

616 阅读1分钟
 let obj = {
            name: '张三',
            age: '19',
        }
        obj[Symbol()] = Symbol(22312)
        Object.defineProperty(obj, 'job', {
            value: (v) => {
                console.log(v)
            },
            enumerable: false
        })
        console.log(Object.keys(obj)) // ['name', 'age']
        console.log(Reflect.ownKeys(obj)) // ['name', 'age', 'job', Symbol()]
        console.log(Object.getOwnPropertyNames(obj))  //  ['name', 'age', 'job']

由此可见

Object.keys()  方法会返回一个给可见定对象的自身可枚举属性组成的数组。 Reflect.ownKeys()  返回一个由目标对象自身的属性键组成的数组(所有属性)。 Object.getOwnPropertyNames() 方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括 Symbol 值作为名称的属性)组成的数组。