数组的元素可以知道JS中该数组的所有者吗?

时间:2011-09-26 15:15:36

标签: javascript arrays oop function object

这可能看起来有点奇怪,但让我详细说明......我有一个对象的实例(在这种情况下z是Bla的实例),它有一个其他对象的列表(Bla2's),类似于这样:

Bla = function()
{
    this.array = [new Bla2(), new Bla2(), new Bla2()];
    this.x = 4;
}

Bla2 = function()
{
    this.y = MYOWNER.x; //in this case, z is the owner
}

z = new Bla();

1 个答案:

答案 0 :(得分:5)

默认情况下,没有元素不知道哪个数组拥有它们。主要是因为元素很容易包含在多个数组中。请考虑以下

var x = new Bla2();
var array1 = [x];
var array2 = [x];

在这种情况下,x位于2个数组中,因此拥有单个所有者属性本身就是不正确的。

如果特定情况需要,可以手动创建此关系。请考虑以下

this.array = [new Bla2(), new Bla2(), new Bla2()];
for (var i = 0; i < this.array.length; i++) {
  this.array[i].owner = this.array;
}