Я делаю своего рода шаблон для всех обычных событий мыши на холсте.
Итак, у нас есть класс для определения слов, и все события должны запускаться при наведении курсора мыши на слово.
затем я объявил тестовый объект (приятель) в "универсальной" (но теперь заключенной в пробел) части кода.
функция contains(pal) использует этот тестовый объект, объявленный как параметр, однако консоль сообщает "TypeError: Невозможно прочесть свойство 'posX' неопределенного значения в" содержит "
поскольку posX является атрибутом объекта "pal", функция contains (pal) не может прочитать этот объект, я полагаю.
вопрос ... почему?
см. полный код на https://jsfiddle.net/evy182bp/



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Глядя на ваш код, строка 141 - это та, которая вызывает проблему.
console.info( "pincha dentro = ", contains());
Проблема в том, что вы вызываете метод contains без передачи параметра объекта pal, что означает, что он автоматически передает undefined (посмотрите здесь)
function contains(pal) {
if ((pal.posX <= mouse.x)&&
(pal.posX + pal.largoPalabra >= mouse.x)&&
(pal.posY <= mouse.y)&&
(pal.posY + pal.altoPalabra>= mouse.y))
{return true;}
else { return false;}
// if ((100 <= mouse.x)&&
// (100 + 150 >= mouse.x)&&
// (200 <= mouse.y)&&
// (200 + 40>= mouse.y)) // this works
}
Как только вы удалите эту строку, у вас все будет без ошибок. Надеюсь это поможет
Код, который вы связали, не работает
Uncaught ReferenceError: plantillaEventos is not defined