Как перечислить все свойства (методы и атрибуты) в объекте и цепочке прототипов? Меня интересуют все (перечисляемые, а не перечислимые).Javascript - список всех свойств
целевой браузер - хром.
Как перечислить все свойства (методы и атрибуты) в объекте и цепочке прототипов? Меня интересуют все (перечисляемые, а не перечислимые).Javascript - список всех свойств
целевой браузер - хром.
Это:
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
}
Я заинтересован во всех из них (перечислим, а не перечислим).
Вы не можете перечислить то, что не перечислено. На самом деле вы можете определить неперечислимые свойства, чтобы избежать их появления как части итератора, например, for...in
или Object.keys
. Смотрите этот другой Q & А узнать больше о обходном: 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...
}
}