-3

このコードは、オブジェクトを読み取るためにどのように読み取り、その中のオブジェクトを読み取ることができますか?

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])
        }
    }
}
4

1 に答える 1

0

1つの方法は、コードを関数に入れて、次のように再帰的に呼び出すことです。

function printObject(obj) {
  for (var propName in obj) {
    console.log("key: " + propName + " value: " + obj[propName]);

    if (typeof obj[propName] == "object") {
        printObject(obj);
    }
  }
}

上記は、オブジェクトの[[Prototype]]チェーン上の列挙可能な属性も示しています。それらを無視するには、hasOwnPropertyテストを使用します。

  if (obj.hasOwnProperty(propName)) {
    // propName is not inherited
  }

ホストオブジェクト(DOM要素など)を関数に渡す場合は注意が必要です。これらのオブジェクトには特別な注意が必要です。

于 2012-08-20T03:03:47.253 に答える