<分区>
我了解 this
在对象上调用时的工作原理,但我无法理解 this
从“静态”上下文调用时的工作原理。
给定以下 HTML:
<body onload="myOnLoad()">
<div id="someDiv">0</div>
</body>
...和这个 javascript:
function myOnLoad() {
var inc = new Incrementer();
/*** increase() works fine here, "this" refers to "inc" ***/
inc.increase();
inc.setOnClick();
}
function Incrementer() {
this.value = 0;
}
Incrementer.prototype.setOnClick = function() {
/*** increase fails to update someDiv when clicked.
"this" is not "inc" ***/
document.getElementById("someDiv").onclick = this.increase;
}
Incrementer.prototype.increase = function() {
document.getElementById("someDiv").innerHTML = ++this.value;
}
...点击 someDiv
将它的 innerHTML 变成 NaN
。我意识到这是因为 onclick 事件不知道 inc
的存在,但我不明白的是如何将 'inc' 传递给 onclick 事件。
你知道我如何从 onclick 的上下文中访问 inc
的变量吗?或者,是否有更传统的方法来执行此操作?
我最感兴趣的是了解如何使 someDiv
的 onclick 指向特定实例 inc
。