Javascript旧语法到箭头函数的转换
所以我想在不使用jquery或其他库的情况下使用这个示例 我有这个密码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 = () => {...} 这不管用。 我是接近了还
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
,这是变量名,它起作用了。我将阅读箭头函数的部分:-)感谢您的解释-如果允许,我将接受答案