Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript旧语法到箭头函数的转换_Javascript_Ajax_Xmlhttprequest_Arrow Functions - Fatal编程技术网

Javascript旧语法到箭头函数的转换

Javascript旧语法到箭头函数的转换,javascript,ajax,xmlhttprequest,arrow-functions,Javascript,Ajax,Xmlhttprequest,Arrow Functions,所以我想在不使用jquery或其他库的情况下使用这个示例 我有这个密码 let xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = function() {...} 正如您所见,它使用了旧式的function() 如何将其更改为箭头函数样式 let xmlHttp = new XMLHttpRequest(); xmlHttp.onreadystatechange = () => {...} 这不管用。 我是接近了还

所以我想在不使用jquery或其他库的情况下使用这个示例

我有这个密码

let xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {...}
正如您所见,它使用了旧式的
function()

如何将其更改为箭头函数样式

let xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = () => {...}
这不管用。
我是接近了还是完全错了?同样,我不想在本练习中使用库。

箭头函数的问题是它们保留了外部作用域的
this
对象

第一个示例将
XMLHttpRequest
绑定到
this
引用第二个
窗口

要使用箭头表示法进行此操作,需要使用外部名称
xmlHttp
引用
XMLHttpRequest
,或将其绑定到回调函数:

let xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = ((request) => {...}).bind(undefined, request);


请注意,您不能以任何方式(绑定、调用、应用)覆盖箭头函数的
引用

Bellian的上述代码看起来不错,但
.bind(未定义、请求)
提供了简单性

有另一种方法可以同步到您的问题和预期答案:

我强烈建议你应该这样做。箭头功能删除了直接
,以便更好地访问结果。检查自己的
console.log(x)
仅在没有
目标的情况下进行

您还可以:

让xmlHttp=newxmlhttprequest();
xmlHttp.onreadystatechange=x=>{
设结果=x.target;
如果(result.readyState==4&&result.status==200){
console.log(result.responseText);
}

};这确实有效。错误在其他地方你说它不工作是什么意思?浏览器不支持它?您也可以使用
const
而不是
let
我怀疑您在分配
xmlHttp
代码片段是否在chrome v59中工作。你使用的是什么浏览器。可能是浏览器还不支持箭头函数,可能需要一个我尝试过的polyfill:let xmlHttp=new XMLHttpRequest();xmlHttp.onreadystatechange=()=>{console.log('s')}这就是我的想法,但是如果我使用arrow函数,浏览器控制台不会返回任何东西-老式函数会返回work@DarthJDG你的评论就是罚单——我把
这个
改成了
xmlHttp
,这是变量名,它起作用了。我将阅读箭头函数的
部分:-)感谢您的解释-如果允许,我将接受答案