for in 和 Object.keys()的区别

发布时间 2024-01-05 11:12:29作者: 默然晴天

for in 和 Object.keys() 都能遍历对象的属性名,但是他们有什么区别呢?

我们先看示例:定义了一个 obj 对象,同时在对象的原型链上添加了一个新属性 sex,对obj分别使用这两种方法有何不同?

 可以看到 Object.keys() 对obj对象做了遍历操作 返回了一个数组,且数组元素 是 obj 这个 实例对象的所有属性名 不包含原型链上的属性名!

 可以看到 for in 也是对 obj对象的遍历,从打印值可以看到 遍历元素 包含了原型链上的属性名!

 

总结:区别1:Object.keys()有返回值,且返回值为 实例对象的所有属性名组成的数组

   区别2:for in 遍历包含原型链上的属性,而 Object.keys() 只会遍历 实例对象本身的所有属性!