正確にはできません。関数がどのオブジェクトに存在するかを知る意味はありません。
複数の場合があることに注意してください:既存のコードの後にこれを記述できた可能性があります:
var obj2 = {some:obj.subobj3};
したがって、プロパティ値からそれを保持するオブジェクトへの一意のリンクは存在できません(アクセス可能なリンクはありません)。
ここで、オブジェクトの作成時に作成されたリンクに満足すると仮定すると、ファクトリを使用してオブジェクトを構築できます。
obj = (function(){
var parent = {
subobj1: {
},
subobj2: {
func1: function(){
},
func2: function(){
}
},
subobj3: {
func3: function(){
},
func4: function(){
parent.subobj2.func1();
}
}
};
return parent;
})();
その後、あなたは呼び出すことができます
obj.subobj3.func4();
デモンストレーション
編集
質問にタグOOPを付けたようです。私が与えたパターンは、モジュールを定義するためにより頻繁に使用されることを知っておく必要があります。javascriptのOOPは、インスタンス共有メソッドと継承を有効にするために、new
とを使用して行われることがよくあります。prototype
おそらくOOPではなくモジュールが必要なので、問題はないようです。
この紹介を参照してください。