【发布时间】:2017-06-30 15:43:01
【问题描述】:
我有一个用构造函数创建的对象数组。这是构造函数定义:
function Expander(elem, startingFlipped) {
this.element = elem;
this.flipped = startingFlipped;
}
(以下,rawElems 只是document.getElementsByClassName('foo'); 的结果)
一旦 DOMContentLoaded 事件触发,我会执行以下操作来查找、构造新对象并将其推送到数组中:
for (var i = 0; i < rawElems.length; i++) {
expanders[i] = new Expander(rawElems[i], false);
expanders[i].this.element.addEventListener("click", function (event) {
console.log("Clicked " + expanders[i].this.element);
});
}
问题是,我不知道访问this 属性的语法如何。这当前会引发错误:
未捕获的类型错误:无法读取未定义的属性“元素” 在 HTMLSpanElement。
这在某些方面很棒,因为这些是 <span> 元素(控制台记录对象和数组显示它已正确填充)。
但由于我正在尝试这种构造函数模式,如何使用this 正确引用每个对象内的元素?
【问题讨论】:
-
试试
expanders[i].element..... -
@PranavCBalan 实际上,我仍然遇到同样的错误(我也尝试过)
标签: javascript arrays javascript-objects