我遇到了这个ajax电话。它完美无缺:
$.ajax({
url: '/items/' + item.id,
method: 'PUT',
data: {item: item},
success: () => {
this.updateItems(item);
}
});
我没有得到() =>
的含义。我使用了成功:function(){ }
然后它给了我一个错误
" updateItems不是函数"
答案 0 :(得分:3)
该构造称为箭头函数。它已与ES2015标准一起引入,其工作方式与function() {}
语法类似。
有关更多信息,check the MDN docs。
请注意,所有浏览器尚不支持此语法,尤其是旧版本,因此您应该查看transpiling it into ES5 compliant JavaScript。
您尝试将其转换为经典function() {}
失败的原因是经典函数定义了自己的this
值,而箭头函数使用了周围函数的this
值。这就是为什么this.updateItems
再也找不到的原因。
要解决此问题,请手动绑定函数上下文:
$.ajax({
url: '/items/' + item.id,
method: 'PUT',
data: {item: item},
success: function() {
this.updateItems(item);
}.bind(this)
});
答案 1 :(得分:0)
它是一个箭头函数,就像一个也绑定this
的匿名函数。当你将它切换到函数()时,this
被绑定到其他东西,因此错误。
编辑:
如果您仍想使用更传统的语法,请使用:
function(){/*...*/}.bind(this)
这将确保您绑定到正确的对象。