如何列出对象及其原型链中的所有属性(方法和属性)? 我对所有这些都感兴趣(可枚举,而不是可枚举)。
目标浏览器 - chrome。
答案 0 :(得分:0)
此:
for(var k in obj) {
console.log(k, obj[k]) // name, value
}
实施例:
var obj1 = { a: 10, b: "x", c: { no: "no" }}
var obj2 = new Object(obj1)
obj2.d = "yes"
for (var k in obj2) {
console.log(k, obj2[k]) // name, value
}

答案 1 :(得分:0)
我对所有这些感兴趣(可枚举,而不是可枚举)。
您无法枚举不可枚举的内容。实际上,您可以定义不可枚举的属性,以避免它们显示为for...in
或Object.keys
等迭代器的一部分。请参阅此其他问答以了解有关解决方法的更多信息:Is it possible to get the non-enumerable inherited property names of an object?
目前,迭代所有属性的最简单方法是自己的属性和原型属性使用for...in
循环:
for(var propertyName in obj) {
}
您可以使用Object.hasOwnProperty
检查某个属性是否未在给定的对象原型上声明:
for(var propertyName in obj) {
if(obj.hasOwnProperty(propertyName)) {
// It's not from the object's prototype...
}
}