我对 javascript 有点陌生,我在实施以下内容时遇到了困难(现在已经有 2 天了):
考虑我有一个 Object(),'engine',我希望它根据帖子的内容做出不同的响应。即用户有一个动作,引擎解释动作,向服务器发送请求,服务器响应,“引擎”相应地采取行动。
作为所需行为的一个最小示例,我展示了一个“引擎”,它假设正在接收鼠标点击的位置(receiveClickEvent),通过“帖子”(requestByAsyncPost)发送它,并根据其内容做出响应(respondToRequest):
做post的一个小功能
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”在函数函数内部。我怎样才能实现这种行为?