Если не секрет, зачем вы пишите this.name, что это вообще ? Зачем вы передаёте в функцию аргумент name, но не обращаетесь к нему? Выглядит это очень странно)
Сделать так, как вы хотите, можно:
let Sanya = document.getElementById("sn");
let Vasya = document.getElementById("vs");
let Danya = document.getElementById("dn");
function changeColor(name) {
return () => {
this.name.style.backgroundColor = "black";
}
}
Правда по-моему код с this.name всё равно не будет работать, но может я просто не понимаю, что вы хотите сделать
Если я понял правильно, рабочее решение -
function changeColor(event) {
event.target.style.backgroundColor = "black";
}
// Можно и через "onmouseover", но, если коротко, лучше так:
document.getElementById("sn").addEventListener('mouseover', changeColor);
document.getElementById("vs").addEventListener('mouseover', changeColor);
document.getElementById("dn").addEventListener('mouseover', changeColor);