【发布时间】:2016-08-16 17:03:58
【问题描述】:
我正在尝试将以下内容翻译成 ES5,同时学习该语言:
const transitionendFn = ()=> {
[...this.slider].forEach((el)=> el.className = 'item');
selectedEl.classList.add('active');
this.isAnimating = false
}
ES5:
const transitionendFn = function() {
[].concat(this.slider).
forEach(function (el) {
return el.className = 'item';
});
selectedEl.classList.add('active');
this.isAnimating = false
}
我不明白展开部分。
this.slider 包含以下内容:
感谢任何帮助纠正此代码。
我的翻译得到“TypeError: el 未定义”。
【问题讨论】:
-
[...this.slider].forEach可以翻译为Array.prototype.forEach.call(this.slider, ...。[...foo]成语是一种将类数组对象或可迭代对象转换为数组的方法。 -
[...this.slider]大致等于Array.from(this.slider)。this.slider应该转换为数组,因为它在这里是可迭代的(可能是也可能不是数组)。 -
ES5 没有
const。 -
@torazaburo 只是可迭代的,而不是任意的数组。只有
Array.from处理类似数组。
标签: javascript ecmascript-6 ecmascript-5