Метод bind()
Указывает функции объект в контексте которого она должна выполняться:
объект.метод.bind(объект)
function S(){
this.text='свойство экземпляра объекта S'
this.f=function(){
document.getElementById('text1').textContent=this.text
}
}
let xs = new S()
document.getElementById('b1').addEventListener('click', xs.f.bind(xs))
Без bind метод xy.f будет искать свойство в объекте кнопки button2.
function Y(){
this.text='свойство экземпляра объекта Y'
this.f=function(){
document.getElementById('text2').textContent=this.text
}
}
let xy = new Y()
let button2 = document.getElementById('b2')
button2.text='свойство объекта кнопки'
button2.addEventListener('click', xy.f)