遍历对象的属性

207 阅读1分钟

object.keys()

遍历自身可枚举的属性 (可枚举,非继承属性) 
var obj = {foo:'bar',baz:42}
console.log(Object.keys(obj))    //["foo","baz"]

for in

跟 object.keys()相比 -----> for ..in 还会枚举其原型链上的属性

var obj = { 0: "a", 1: "b", 2: "c"}
Object.prototype.d=10
for(let k in obj){
    console.log(k);  //0,1,2,10
}

如果不想遍历原型上的属性 可以使用hasOwnProperty方法 ===这个方法判断对象中是否含有该属性

var obj = { 0: "a", 1: "b", 2: "c"}
Object.prototype.d=10
for(let k in obj){
    if(obj.hasOwnProperty(k) === true)
    console.log(k);   //0,1,2
}

Object.getOwnPropertyNames()

该方法返回一个由指定对象的所有自身属性组成的数组 (包括不可枚举属性但不包括 Symbol 值作为名称的属性

var arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(arr));    // ["0", "1", "2", "length"]

var obj = { 0: "a", 1: "b", 2: "c"}
console.log(Object.getOwnPropertyNames(obj));   //  ["0", "1", "2"]