javascript:对包含对象的对象进行排序并读取它们
这段代码是如何通过对象进行读取的,并且能够读取其中的对象:javascript:对包含对象的对象进行排序并读取它们,javascript,Javascript,这段代码是如何通过对象进行读取的,并且能够读取其中的对象: var book = { "main title": "Javascript", "sub-title": "Def Guide", "for": "all audiences", author: { firstname: "David", surname: "Fatagans" } }; for (propName in book){ console.l
var book = {
"main title": "Javascript",
"sub-title": "Def Guide",
"for": "all audiences",
author: {
firstname: "David",
surname: "Fatagans"
}
};
for (propName in book){
console.log("key: " + propName + " value: " + book[propName]);
if (typeof book[propName] === "object"){
for (innerObject in book[propName]){
console.log("key: " + innerObject + "value: " + book[propName][innerObject])
}
}
}
一种方法是将代码放入函数并递归调用它,类似于:
function printObject(obj) {
for (var propName in obj) {
console.log("key: " + propName + " value: " + obj[propName]);
if (typeof obj[propName] == "object") {
printObject(obj);
}
}
}
上面还将显示对象的[[Prototype]]
链上的可枚举属性。要忽略这些,请使用hasOwnProperty测试:
将主机对象(例如DOM元素)传递给函数时要小心,需要对这些对象采取额外的预防措施。@nick:大声读这句话,这段代码如何读取对象,如何读取其中的对象。这对你有意义吗?是的,基本上如果一个对象的值是一个对象,它将能够读取嵌套对象。只是想知道这是否是一个很好的尝试来检查吗?谢谢你的解释。我一直在读弗拉纳根的书,这本书就在那里。
if (obj.hasOwnProperty(propName)) {
// propName is not inherited
}