Object.keys( )
不会走原型链,而for in
会走原型链
Object.prototype.test = ‘test';
var obj= {
a:1,
b:2,
}
//Object.keys不会输出原型链中的数据;
console.log(Object.keys(obj))
// ["a", "b"]
for in
更适合遍历对象,不要使用for in
遍历数组。
for in
遍历的是数组的索引
(即键名),而for of
遍历的是数组元素值
for of
遍历的只是数组内的元素
,而不包括
数组的原型属性method
和索引name
for(var key in obj){
console.log(key)
}
// a
// b
// test //for in 会把原型链中test 输出
`hasOwnPropery`方法可以判断某属性是否是该对象的实例属性
遍历对象
Object.prototype.method=function(){
console.log(this);
}
var myObject={
a:1,
b:2,
c:3
}
for (var key in myObject) {
console.log(key);
}
for..of
适用遍历数/数组对象/字符串/map/set
等拥有迭代器
对象的集合.但是不能遍历对象
,因为没有迭代器
对象.与forEach()
不同的是,它可以正确响应break、continue和return
语句
for-of
循环不支持普通对象
,但如果你想迭代一个对象的属性,可以用for-in
循环(这也是它的本职工作)或内建的Object.keys()
方法
for (var key of Object.keys(someObject)) {
console.log(key + ": " + someObject[key]);
}
遍历map对象
时适合用解构,例如;
for (var [key, value] of phoneBookMap) {
console.log(key + "'s phone number is: " + value);
}
网友评论