ES7
Object.keys(obj)
传入一个对象,返回一个包含对象的可枚举属性和方法的名称的、所有元素为字符串的数组。
ES6之后传入的不是对象也可以强制转换为对象,而在ES5中,如果传入的不是对象会报错:xx is not an object。
ES6中传入的不是对象的具体返回值:
传入字符串,返回索引值。
传入数组,返回索引值。
构造函数,返回空数组或者属性名
通俗而不严谨的说,就是返回一个由对象的属性名/方法名组成的数组。
注意:keys 方法仅返回可枚举属性和方法的名称;若要返回可枚举和不可枚举属性和方法的名称,可以使用Object.getOwnPropertyNames()函数。
那么问题来了,学以致用嘛,当你想遍历对象的所有值时,该怎么做?
诶意外发现了一种把对象转换成数组的方法啊哈哈 ~
好了,这种方法看起来很好用,但是ES7已经老了,让我们试试看如果使用ES8如何操作:
ES8
Object.values()
这两种方式得到的结果是一致的,也就是说Object.values()帮我们省去了遍历key,并根据这些key获取value的步骤,可以直接得到对象的键值组成的数组。
那么也就是这两种方法,通俗而不严谨的,我们可以理解成,Object.keys()可以帮我们获取对象键名组成的数组,Object.values()可以帮我们获取对象键值组成的数组,真的超级方便了。
ES8还为我们提供了一种方法,用来返回一个给定对象自身可枚举属性的键值对的数组。
Object.entries()
也是超级贴心了~