Tek*_*anu 26 javascript jquery ecmascript-6 babeljs
我有这个ES6代码,在用Babel编译它到ES5后,this
内部.each
的回调就变成了undefined
.我该如何解决这个问题?
let mediaBoxes = $(".now-thumbnail");
let titles = [];
mediaBoxes.each(() => {
let obj = {
index: i,
title: $(this).find(".now-thumbnail-bottomtext").text().trim()
};
titles.push(obj);
});
Run Code Online (Sandbox Code Playgroud)
Tek*_*anu 41
我的解决方案是根本不使用this
,而是使用传递给回调函数的变量.第一个是索引,第二个是DOM元素本身.
let mediaBoxes = $(".now-thumbnail");
let titles = [];
mediaBoxes.each((index, element) => {
let obj = {
index: index,
title: $(element).find(".now-thumbnail-bottomtext").text().trim()
};
titles.push(obj);
});
Run Code Online (Sandbox Code Playgroud)
Aru*_*hny 27
那是因为this
箭头函数的平均值不同.
箭头函数捕获封闭上下文的this值,
的每个()函数传递元件作为第二个参数回调.
let mediaBoxes = $(".now-thumbnail");
let titles = mediaBoxes.map((i, el) => {
return {
index: i,
title: $(el).find(".now-thumbnail-bottomtext").text().trim()
};
}).get();
Run Code Online (Sandbox Code Playgroud)