Добрый день всем.
Мне нужно знать, возможно ли что-то подобное и как:
Давайте рассмотрим пример, подобный приведенному ниже:
function ObjectB(pFoo){
//Some object vars/properties
this.varX = '';
//Some object methods
this.methodX = function(){
//...
//HERE. is where I want to call the function/method from "my container/parent", which is an instanced ObjectA. How can I call for example, "method2()" from ObjectA?
//...
};
this.methodY = function(){
//...
console.log(this.varX);
//...
};
//Constructor time
this.varX = pFoo;
}
function ObjectA(pA, pB){
//Some object vars/properties
this.var1 = '';
this.var2 = '';
this.innerObjB = null;
//Some object methods
this.method1 = function(){
//...
this.innerObjB.methodY(); //No problem at all: calls method from it's own inner "var/property" self object.
//...
};
this.method2 = function(){
//...
this.var2 = 'trololo';
//...
};
this.method3 = function(){
//...
this.innerObjB.methodX();
//...
};
this.method4 = function(){
//...
console.log(this.var2);
//...
};
//Constructor time
this.var1 = pA;
this.var2 = pB;
this.innerObjB = new ObjectB("whatever");
}
//Runtime
var ObjA = new ObjectA("blah", "bleh");
ObjA.method1(); //prints "whatever".
ObjA.method4(); //prints "bleh".
ObjA.method3(); //calls innerObjB.methodX(), which SHOULD call ObjectA method2().
ObjA.method4(); //If previous thing were resolved, now this should print "trololo".
Как этого добиться?Как мне сделать ObjectB methodX (), чтобы вызвать его «контейнер / родительский объект» (не реальный родитель, поскольку это не наследование) ObjectA уже создал метод method2 ()?
Что я думал, так этопередать в качестве параметра объекту B, «this», из объекта A, например:
this.innerObjB = new ObjectB("whatever", this);
Таким образом, у меня будет «полный objectA» внутри ObjectB для доступа.Уже создан и полностью функционален.Но это создает глубокую дыру в моей середине: разве это не редкий вид зависимости "рекурсивности"?Поскольку вы можете получить доступ из B, A снова, и из этого A получить доступ к B и снова, никогда не заканчивайте цикл.Так что это не имеет особого смысла вообще ...
Спасибо за ваше время.
С уважением,
Марк.