From an Object's Array's Element, how can I access the Object's properties/methods. Js

时间:2015-04-29 00:33:55

标签: javascript arrays

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.

2 个答案:

答案 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'传递给数组方法。