【发布时间】:2021-03-02 19:54:08
【问题描述】:
您好,首先我原谅自己的标题非常笼统,但老实说,如果不是这样,我不知道如何总结我的问题。 我正在用 javascript 创建一个非常复杂的项目,这是一种我不太习惯使用的语言。我通常用 c/c++ 开发。 我想将一个事件分配给一个 DOM 对象(在这个例子中是一个 id 为“test”的 div 元素)。 有 2 个类 A 和 B。A 类的对象引用了 B 类的对象。 我从 A 类添加事件。 我预计有两种可能性:1)侦听器中的 this 指的是 div 元素,并且没有 objxxxx 属性; 2) this 指的是创建侦听器的对象,输出将为“0”。 Firefox 和 Chromium 调试器都显示 b.test() 已执行。并且 console.log 输出为“未定义”。 怎么可能?
class A {
objxxxx;
constructor(obj) {
this.objxxxx = obj;
}
create() {
document.getElementById("test").addEventListener("click", this.objxxxx.test );
}
}
class B {
a;
value;
constructor() {
this.value = 0;
this.a = new A(this);
this.a.create();
}
test() {
console.log(this.value);
}
}
let b = new B();
<div id="test">click</div>
【问题讨论】:
-
您好,您的第一个猜测是正确的。
div也缺少value属性,这就是你得到undefined的原因。否则你会得到divDOM 元素。
标签: javascript html inheritance events