Это вопрос о области видимости в 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.Как вы видите, это внутренняя функция исследования, которая фактически выполняет эту работу, но я использовал 2-й аргумент в качестве счетчика глубины, чтобы обеспечить соответствующий отступ текста для выходной строки.
Я не хотел, чтобы пользователи использовали функцию, для которой требовался дополнительный аргумент, который всегда должен указываться в первом экземпляре как ноль, поэтому я обернул его в вызов функции API 'objectExplorer,Мой вопрос, это правильный подход?Я пришел из C #, Java и других основанных на классах языков ООП, и API в них являются просто общими свойствами и методами, но в javascript я не знаю способа сделать вещи приватными, кроме как скрыть их объявление внутри другого объекта.