Искал ответ, но сформулировать запрос трудновато. В общем, заезжанная проблема с this в js:
<html>
<head>
<title>Deep Thought</title>
<script type="text/javascript">
var deepThought = {
answer: 42,
alertAnswer: function (e) {
//need 42!!
}
}
onload = function() {
document.getElementById("button").addEventListener('click', deepThought.alertAnswer);
}
</script>
</head>
<body>
<button id="button">
alert the Answer to the Ultimate Question of Life,
The Universe, and Everything
</button>
</body>
</html>
Если просто запустить
deepThought.alertAnswer(); а внутри функции прописать
alert(this.answer); то всё заработает, но нужно запускать функцию через событие, а в этом случае
this === e.target. Спасите мой объектно-ориентированный мозг. Альтернативные структуры приветствуются, но в итоге функция alertAnswer будет выведена в отдельный объект, а куча разных deepThought'ов с разными answer будут его наследовать. В общем, хардкод не предлагать.