Использование .bind
:
function initEvents () {
const message = 'any string' //processSomeString();
// pass `myButton` as first argument of `.bind`
// so that in your `myButtonClick()` you still have reference to `this`
myButton.addEventListener('click', myButtonClick.bind(myButton, message));
}
function myButtonClick(message, e){
console.log(`this: ${this}`);
console.log(`message: ${message}`);
}
initEvents();
<button id="myButton">Button</button>
Обратите внимание, что в вашем коде эта строка: myButton.addEventListener(myButtonClick)
не будет работать, потому что вам не хватает одного аргумента "eventType" для.addEventListener
.
Изменить для соответствия вопроса:
Чтобы сохранить this
ссылку на ключевое слово, просто передайте this
в качестве первого аргумента:
function initEvents () {
const message = 'any string' //processSomeString();
// For JS beginners, just read the documentation link above for explanation
myButton.addEventListener('click', myButtonClick.bind(this, message));
}
function myButtonClick(message, e){
console.log(`this: ${this}`);
console.log(`message: ${message}`);
}
initEvents();
<button id="myButton">Button</button>