【问题标题】:Can an element of a array know who is the owner of that array in JS?数组的元素能否知道 JS 中该数组的所有者是谁?
【发布时间】:2011-11-25 07:35:36
【问题描述】:

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

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();

【问题讨论】:

  • 您如何定义“所有者”?数组可以被任意数量的其他对象持有的变量引用。

标签: javascript arrays oop function object


【解决方案1】:

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

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;
}

【讨论】:

  • 谢谢你的解释很好!我会尽快(7 分钟)接受你的回答。
  • 我认为他是在数组项之后引用了拥有数组的对象,而不是对数组的引用。如果是这种情况,更好的选择可能是在构造函数参数中传递引用,例如[ new Bla2(this), new Bla2(this), new Bla2(this) ].
  • 是的,这是真的,天哪,我忘记了我需要什么......无论如何都是一个很好的答案。
猜你喜欢
  • 1970-01-01
  • 2017-04-28
  • 2023-04-10
  • 2017-04-01
  • 2017-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多