ajaxアプリケーションを構築する際には、通常、リモートデータをJSON形式で取得することをお勧めします。しかし、階層が予測不可能な場合(specifically geocoding responses from Google Maps API)、DOMメソッドのgetElementsByTagNameは階層内のどこにでもデータを取得するため、XML形式にすることが魅力的です。関心のあるタグ/名前を持つ要素/プロパティが1つしかないと仮定すると、次の関数はgetElementsByTagNameと効率的に同等ですか?どのように改善することができますか?JSONオブジェクトの予測不可能な階層
function findProperty(obj,prop){
for(var p in obj){
if(p==prop){
return obj[p];
}
if(obj[p] instanceof Object){
var tmp = findProperty(obj[p],prop);
if(tmp){
return tmp;
}
}
}
}
'instanceof'はここで' constructor'のチェックと同じでなければなりませんが、両方とも他のフレームからオブジェクトを "マッチ"できません。 Safari <2.0.4のような古いクライアントでは、 'hasOwnProperty'が欠けていることを覚えておくと良いでしょう。 – kangax
instanceof *は同じでなければなりませんが、FF 3.5の例では、次のようにfalseを返します: "as" instanceof String これはtrueを返します。 "as" .constructor === String – illvm