Я уже некоторое время размышляю над этим и задаюсь вопросом, может ли кто-нибудь указать мне правильное направление.
У меня есть следующее определение объекта:
var foo=function(){};
foo.prototype={
foo1:function(){},
baz:{
baz1:function(){}
},
bar:function(){
function privateFunc1(){}
function privateFunc2(){}
return {
bar1:function(){
//do something using privateFunc1
//return the result
}
};
}
};
var foobar = new foo();
Теперь, чтобы получить доступ к под-методу baz1
метода baz
, я могу сделать foobar.baz.baz1()
Но чтобы получить доступ к под-методу bar1
метода bar
, мне нужно сделать foobar.bar().bar1()
( Обратите внимание на дополнительные символы после bar
)
Есть ли способ определения объекта foo
, чтобы я мог позвонить bar1
, используя foobar.bar.bar1()
( Обратите внимание, без лишних скобок ), Но все еще сохраняют использование приватных функций privateFunc1
и privateFunc2
в методе bar
.
Также обратите внимание, что я не могу сделать bar
самовыполняющейся функцией, поскольку она зависит от изменяемых свойств объекта foo
, которые могут измениться после самовыполнения функции.
Надеюсь, вопрос был достаточно ясен ... заранее спасибо.