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"]