2012-03-11 41 views
0

這是一個關於範圍問題,JavaScript和製作的API,我有以下代碼:的Javascript API私人功能和模塊

function test_objectExplorer() 
{ 
    var obj = { 
     a:true, 
     b:12, 
     c:{ 
      a:12, 
      b:null 
     }, 
     d:function(msg){ 
      alert(msg); 
     } 
    }; 
    alert(objectExplorer(obj)); 
} 


function objectExplorer(obj) 
{ 

var explore = function(obj,depthCount) 
{ 
    var str = ""; 
    for(var prop in obj) 
    { 
     for(i=0; i<depthCount; i++)str += " "; 
     str += prop + " = " + obj[prop] + "\n"; 
     if((typeof obj[prop] == 'string') || obj[prop] instanceof String)continue; 
     str += explore(obj[prop],depthCount+1); 
    } 
    return str; 
} 
return explore(obj,0); 
} 

我使用objectExplorer功能「看」的JavaScript對象。正如你看到的那樣,它是實際完成工作的內部探索函數,但是我使用第二個參數作爲深度計數器爲輸出字符串提供適當的文本縮進。

我不希望用戶必須使用一個需要額外參數的函數,這個參數總是必須在第一個實例中作爲數字零提供,所以我將它封裝在'API'函數調用objectExplorer中。我的問題是,這是正確的方法嗎?我來自C#,Java和其他基於類的OOP語言,其中的API只是公共屬性和方法,但在JavaScript中,我知道沒有辦法將事物隱藏起來,而不是將其聲明隱藏到另一個對象中。

回答