これは、JavaScriptとなったAPIでの範囲についての質問ですが、私は次のコードを持っている:私はjavascriptのオブジェクトで「見」のためobjectExplorer機能を使用の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);
}
を。ご覧のとおり、実際に作業を行う内部探索関数ですが、出力文字列に適切なテキストインデントを与えるために、第2引数を深さカウンタとして使用しました。
私は、ユーザが最初のインスタンスで常に0になっていなければならない追加の引数を必要とする関数を使用しないようにしたいので、 'API'関数の呼び出しでobjectExplorerをラップしました。私の質問は、これは正しいアプローチですか?私はC#、Java、および他のクラスベースのOOP言語から来ており、それらのAPIはpublicプロパティとメソッドですが、javascriptでは別のオブジェクトの中に宣言を隠す以外の方法はわかりません。