Я думал, что функция стрелок «просто» является ярлыком для антонимусных функций, поэтому я использовал его довольно много. Однако недавно я столкнулся с примером того, что функция стрелок вызвала некоторые проблемы. Вот пример кода: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) или это невозможно в этом случае?
Спасибо!
Возможный дубликат [Functions Стрелки и об этом] (http://stackoverflow.com/questions/28798330/arrow-functions- и-это) –
Возможный дубликат [Что значит «=>» (стрелка, образованная из равных & больше) в JavaScript?] (http://stackoverflow.com/questions/24900875/whats-the-meaning- из-ан-стрелка-форма ed-from-equals-more-than-in-javas) –
У кого-то плохой день? Доводя хорошие ответы, не оставляя комментариев.Если это стратегические downvotes ... ну, если это так много значит для вас :) – Michelangelo