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

cor*_*zza 2 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();
Run Code Online (Sandbox Code Playgroud)

Jar*_*Par 5

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

var x = new Bla2();
var array1 = [x];
var array2 = [x];
Run Code Online (Sandbox Code Playgroud)

在这种情况下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;
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为他是在数组项之后引用拥有数组的对象,而不是对数组的引用.如果是这种情况,更好的选择可能是在构造函数参数中传递引用,例如`[new Bla2(this),new Bla2(this),new Bla2(this)]`. (2认同)