私はjavascriptに少し慣れていないので、次の実装に問題があります(2日間)。
Object()、'engine'があり、投稿の内容に応じて異なる応答をするようにしたいとします。つまり、ユーザーによるアクションがあり、エンジンがアクションを解釈し、サーバーにリクエストを送信し、サーバーが応答すると、「エンジン」がそれに応じて動作します。
望ましい動作の最小限の例として、仮想的にマウスクリックの位置を受信している「エンジン」(receiveClickEvent)を提示し、「投稿」(requestByAsyncPost)を介して送信し、その内容(respondToRequest)に従って応答します。
投稿を行うための小さな関数
function requestByAsyncPost(content, funct)
{
/* some initialization missing here to not confuse the reader */
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
funct(xmlhttp.response);
}
}
xmlhttp.open("POST","foobar.php", true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(content);
}
var engine = new Object()
engine.respondToRequest = function(content) {/*implementation*/ }
マウスクリックが発生したときにアクティブにしたい小さなコード(トリガー方法は関係ありません)
engine.receiveClickEvent = function(position)
{
var funct = function(content)
{
this.respondToRequest(content); //<<<---- I want to refer engine's 'this'
}
requestByAsyncPost('request=click&position=['+position[0]+','+position[1]+')', funct);
}
「this」は関数関数内にあるため、これは私が望むようには機能していません。この種の動作をどのように実装できますか?