Хорошо, так зачем каждый раз объявлять этот DOM-элемент кнопки, и вы можете использовать функции стрелок, чтобы сохранить значение this , поэтому я изменил ваш код следующим образом:
var speakButton = document.getElementById('speak');
class Person {
constructor(name) {
this.name = name;
this.createEventListeners();
}
createEventListeners = _=>
speakButton.addEventListener('click', this.speak);
speak = _=>
console.log(this.name + " says hi!");
destroy = _=>
speakButton.removeEventListener("click", this.speak);
}
const person1 = new Person('Sylvester');
const person2 = new Person('Arnold');
person2.destroy();
<button id="speak">Speak</button>