Javascript 从js中的字段中选择父对象
我对OOP比较陌生,所以我对术语不太清楚 我创建了一个DOM元素作为对象的字段(例如Javascript 从js中的字段中选择父对象,javascript,oop,object,field,parent,Javascript,Oop,Object,Field,Parent,我对OOP比较陌生,所以我对术语不太清楚 我创建了一个DOM元素作为对象的字段(例如myObject.myElement),并将该元素附加到文档中。该对象附加了一个.mousemove()事件(使用jQuery)。我希望能够选择所选元素(myElement)为其字段的对象(myObject),以便访问该对象的其他字段。存在多个对象,不同对象的元素的事件处理程序相同。是否可以选择元素的父对象?我是否需要为元素指定相同的字段,以便访问相同的数据 我希望能够做到这一点,但可能没有那么简单: $('.b
myObject.myElement
),并将该元素附加到文档中。该对象附加了一个.mousemove()
事件(使用jQuery)。我希望能够选择所选元素(myElement
)为其字段的对象(myObject
),以便访问该对象的其他字段。存在多个对象,不同对象的元素的事件处理程序相同。是否可以选择元素的父对象?我是否需要为元素指定相同的字段,以便访问相同的数据
我希望能够做到这一点,但可能没有那么简单:
$('.bubble').on({mousemove: function () {
parentObject = this.parentObject();
alert(parentObject.otherDataField);
});
元素是这样创建的:
function bubbleObject(value)
{
this.value = value;
this.element = document.createElement('div');
$(this.element).appendTo('.bubbles');
}
myFirstBubble = new bubbleObject(10);
mySecondBubble = new bubbleObject(100);
我需要能够访问对象的值
字段(我正在简化它,因为代码相当长,并且与我的问题基本无关)
我是否需要这样做:
function bubbleObject(value)
{
this.value = value;
this.element = document.createElement('div');
$(this.element).appendTo('.bubbles');
this.element.value = value; // add same value to element
}
或者有更好的方法吗?对父对象的反向引用可能比复制值更好:
function bubbleObject(value)
{
this.value = value;
this.element = document.createElement('div');
$(this.element).appendTo('.bubbles');
this.element.parent = this;
}
但是,使用这种方法,您必须使用element.parent.value来代替。另一种方法(如我前面提到的)是扫描包含对象的所有元素(如果它们包含特定元素)。如果阵列中没有所有这些对象,则必须扫描所有窗口组件(如我所说,这很昂贵):
这只是一份未经测试的草案。如果你有一个父对象列表,你可以用它来代替窗口,那会更好
function findElement(element) {
for (int i = 0, l = objList.length; i < l; i++) {
if (typeof objList[i] === 'object' && objList[i].myElement == element) {
return objList[i];
}
}
return null;
}
函数findElement(元素){
for(int i=0,l=objList.length;i
这种方法到底有什么问题?我认为这只是一个额外的参考,所以不应该有任何性能或内存问题。这种方法没有问题,但是如果有一种方法可以选择父级(就像我在问题中建议的那样),那将更直观,我想,更传统。如果没有,那么你的建议是非常好的。我明白你的意思。父方法需要知道哪个元素属于哪个对象。因此,您的方法需要某种映射(开销要大得多),或者如果对象包含特定元素,则必须扫描所有对象(这将导致非常糟糕的性能)。正如我所说:再多参考一次并不贵。它只是一个指针,不是副本什么的。
function findElement(element) {
for (int i = 0, l = objList.length; i < l; i++) {
if (typeof objList[i] === 'object' && objList[i].myElement == element) {
return objList[i];
}
}
return null;
}