2012-06-11 63 views
1

假設我有一個目標:如何判斷JavaScript對象是否有子對象

obj:{ 
    child:{ 
     x:12, 
     y:50 
    }, 
    key1:"value1", 
    key2:"value2" 
} 

,如果我要穿越的對象,如:

for (var i in obj) { 

} 

我怎樣才能判斷是否該對象有子對象,所以我可以遍歷它。我知道我可以使用hasOwnProperty方法,但在這種情況下,我不知道子對象名稱是什麼。

回答

1

你可以用它來檢查,如果一個屬性包含的對象:

for (var i in obj) { 
    if(obj.hasOwnProperty(i) && obj[i] instanceof Object) { 
     // obj[i] is a child object 
    } 
} 

預防事項的注意:請記住,函數和數組都是Javascript中的對象。您可以單獨測試那些使用instanceof Functioninstance of Array的測試。

1

希望這個片段將幫助您:

for (var i in obj) { 
    if (obj.hasOwnProperty(i)) 
     console.log(typeof obj[i]) 
} 
0

遞歸函數:

var obj = { a : { aa : 'aa' 
       , ab : 'ab' } 
      , b : 'b' 
      , c : 'c' 
      }; 


function listKeyValue (o){ 
    for (var prop in o){ 
     if(typeof o[prop] === 'object') 
     listKeyValue(o[prop]); 
     else 
     console.log(prop,o[prop]); 
    } 
} 

listKeyValue(obj); 
相關問題