2012-03-11 86 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中,我知道没有办法将事物隐藏起来,而不是将其声明隐藏到另一个对象中。

回答