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

标签 javascript ajax xmlhttprequest arrow-functions

所以我想在没有 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/

相关文章:

java - 在 JSP 中将 JavaScript 变量分配给 Java 变量

javascript - 如何使用ajax和php发送数据多个同名输入

javascript - 单击按钮时不显示结果 - HTML、JavaScript

javascript - 计时器上的高度值未正确更新

javascript - 取消输入时提交

javascript - 使用 javascript/Jquery 进行 Ajax

javascript - XMLHttpRequest onprogress total 在 Chrome 上始终为 0

javascript - 如何获取使用 XMLHttpRequest (XHR2) 下载的 PNG 的像素数据

javascript - 为什么 Internet Explorer(或 Chrome)不会显示我的 'Loading...' gif,但 Firefox 会?

javascript - mailto 正文中的某些字符正在停止打开邮件窗口....javascript