Let's say I have object Foo
var Foo = function() {
var array = [];
var method = function() {return true;};
};
And Foo.array will contain another object:
var Bar = function() {
var method = function() {/*Perform Foo.method() here */ };
};
So for var foo.array = [new Bar()];
How can I access foo object from the bar instance array element.
答案 0 :(得分:1)
这是不正确的:
var foo.array = [new Bar()];
你需要这样做:
var foo = new Foo();
然后你可以这样做:
foo.array = [new Bar(foo)];
但您需要修改条形class
,以便存储对foo
的引用,让我们这样说:
var Bar = function(foo) {
// here you will save an object reference
// that will be accesible for all function scope
var _foo = foo;
var method = function() {
_foo.method(); // an example calling
};
};
现在您可以访问foo
课程中的Bar
变量,并随意使用它。但是您的Foo.method()
和Foo.array
不可见,您需要公开它们:
var Foo = function() {
this.array = [];
this.method = function() {return true;};
};
答案 1 :(得分:0)
我认为重新安排事情以便更加面向对象将帮助您解决这个问题。现在,Foo
看起来是一个函数而不是一个实际的对象。将它放在一个对象中然后让Foo
返回该对象将允许您访问它。见下文:
function foo () {
var obj = {
array: function () {
var array = [];
return array;
}
};
return obj;
}
var bar = function () {
var method = function () {
foo().array();
};
}
您可能需要考虑将参数'arrayContents'传递给数组方法。