所以我想在没有 jquery 或其他库的情况下使用这个示例。
我有这个代码
let xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {...}
如您所见,它使用旧式 function()
如何将其更改为箭头函数样式?
let xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = () => {...}
这行不通。 我是关闭还是我完全错误地看待这个?同样,我不想在本练习中使用库。
最佳答案
箭头函数的问题在于它们保留了外部作用域的 this
对象。
您的第一个示例将 XMLHttpRequest
绑定(bind)到 this
引用第二个 window
要使其与箭头符号一起使用,您需要使用外部名称 xmlHttp
引用 XMLHttpRequest
或将其绑定(bind)到回调函数:
let xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = ((request) => {...}).bind(undefined, request);
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
请注意,您不能以任何方式(绑定(bind)、调用、应用)覆盖箭头函数的 this
引用
关于Javascript旧语法到箭头函数的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45299584/