我認爲箭頭函數「僅僅」是一個反義函數的快捷方式,所以我一直在使用它。但是,最近我遇到了一個箭頭函數引起一些問題的例子。下面是一個示例代碼:ES6,箭頭函數,「this」的上下文
function refreshTable() {
$.ajax({
url: root + `/posts?userId=${userId}`,
method: 'GET'
}).then(function(data) {
for (var item of data) {
$('table.list tbody').append(`
<tr>
<td>${item.id}</td>
<td>${item.title}</td>
<td>${item.date}</td>
<td>
<a href="" data-id="${item.id}" class="getDetails">View</a> |
<a href="" data-id="${item.id}" class="getDetails">Delete</a>
</td>
</tr>
`);
}
$('.getDetails').click((e) => {
// $(this) is actually the ajax call, I can't access the "data" part
});
});
}
然而,這個工程:
function refreshTable() {
$.ajax({
url: root + `/posts?userId=${userId}`,
method: 'GET'
}).then(function(data) {
for (var item of data) {
$('table.list tbody').append(`
<tr>
<td>${item.id}</td>
<td>${item.title}</td>
<td>${item.date}</td>
<td>
<a href="" data-id="${item.id}" class="getDetails">View</a> |
<a href="" data-id="${item.id}" class="getDetails">Delete</a>
</td>
</tr>
`);
}
$('.getDetails').click(function(e) {
// $(this) is the HTML element, so I can access "data"
});
});
}
顯然,有一些邏輯箭頭的功能,它創造了this
不同的範圍。發生什麼了?我能用箭頭函數(訪問HTML)實現同樣的事情嗎?或者在這種情況下不可能實現?
謝謝!
的可能的複製[箭職能及本(http://stackoverflow.com/questions/28798330/arrow-functions-和 - ) –
[在JavaScript中,「=>」(等於和大於等於一個箭頭形成的箭頭)的含義可能重複嗎?](http://stackoverflow.com/questions/24900875/whats-the-meaning-的-的箭頭形ed-from-equals-more-in-javas) – 2016-08-24 13:50:48
有人有一個糟糕的一天?在不留下評論的情況下下調好的答案。如果這些是戰略性的downvotes ...以及如果它意味着你這麼多:) – Michelangelo