Reflect.ownKeys()与Object.keys()区别

代码test1:

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

console.log(Object.keys(obj))
// []
console.log(Reflect.ownKeys(obj))
// ["myMethod"]

代码test2:

const obj = {
	 id1: 42,
	 id2: 13
};
console.log(Object.keys(obj))
// ['id1', 'id2']
console.log(Reflect.ownKeys(obj))
// ['id1', 'id2']

从结果上看出:

Object.keys()返回属性key,但不包括不可枚举的属性
Reflect.ownKeys()返回所有属性key

从网上搜索资料所得:

Object.keys() :

相当于返回属性数组

Reflect.ownKeys() :

相当于
Object.getOwnPropertyNames(target) concat(Object.getOwnPropertySymbols(target)

注意:

getOwnPropertyNames()

方法: 返回所有属性的数组

Object.getOwnPropertySymbols()

方法: 返回所有符号属性直接发现在给定的对象

你可能感兴趣的:(Javascript)