<script>
const counter ={
cnt: 0,
inc: function(){
cnt++;
console.log(cnt);
}
}
const button = document.getElementsByTagName('button')[0];
button.addEventListener('click', counter.inc, false);
</script>
如果我按原样运行这段代码,我会得到一个未定义变量的错误。所以我可以通过在函数中添加couner.cnt
来解决这个问题。然而,我不想这样做。还有别的办法吗?
除非在counter
之外定义全局变量,否则没有其他方法。
像这样:
var cnt = 0;
const counter = {
inc: function () {
cnt++;
console.log(cnt);
}
}
const button = document.getElementsByTagName('button')[0];
button.addEventListener('click', counter.inc, false);
<button name="button">click me</button>
但是有更好的方法。您需要使用counter.cnt
而不是cnt
:
const counter ={
cnt: 0,
inc: function(){
counter.cnt++;
console.log(counter.cnt);
}
}
const button = document.getElementsByTagName('button')[0];
button.addEventListener('click', counter.inc, false);
<button name="button">click me</button>
const counter = {
cnt: 0,
inc: function() {
this.cnt++;
console.log(this.cnt);
}
}
const button = document.getElementsByTagName('button')[0];
button.addEventListener('click', () => counter.inc(), false);
<button name="button">click me</button>