提问人:HarrySIV 提问时间:10/19/2021 更新时间:10/19/2021 访问量:64
将按钮绑定到 Dice 类
Binding a button to a Dice Class
问:
我正在尝试创建一类与D&D完全相同的骰子组,这样一来,按下按钮,我就可以掷出骰子并将其记录到控制台。我以为这将是一件非常简单的事情,但我肯定缺少一些东西。这是我目前所拥有的。
class Dice {
constructor (sides) {
this.sides = sides;
}
roll () {
console.log(Math.floor(Math.random() * this.sides) + 1);
}}
const d4 = new Dice (4);
const d6 = new Dice (6);
const d8 = new Dice (8);
const d10 = new Dice (10);
const d12 = new Dice (12);
const d20 = new Dice (20);
const d100 = new Dice (100);
const btn = document.getElementById('button');
btn.onclick = d20.roll;
我目前得到“NaN”,我想我理解它“this”指的是按钮按下,而不是 d20 对象,因此“sides”属性是未定义的,给了我一个未定义的答案。我想也许我必须把“这个”与班级联系起来,做类似的事情
btn.onclick = d20.roll.bind(this);
但我仍然得到 NaN......我不确定此时发生了什么。
答:
1赞
HarrySIV
10/19/2021
#1
哇,经过一个小时的尝试,我解决了我自己的问题......我只是将滚动方法更改为箭头函数。
roll = () => {
console.log(Math.floor(Math.random() * this.sides) + 1);
}
现在我得到了预期的结果,而无需绑定按钮。谁知道呢......
评论