使用ES5-Shim这样的库,我们现在可以使用新的热点。数组上的许多方法(如forEach
,map
,every
等)都可以用现在来编写干净漂亮的代码。
我希望在使用当前浏览器的API(例如DOM)或只使用javascript时,列出一个实际用途,我可以现在使用这些新方法。< / p>
我在谈论这种:
var nodes = document.getElementsByClassName('class')
[].forEach.call(nodes, callback)
function callback(node) {
console.log(node)
}
@Esailija的另一个例子:
[].filter.call( document.myform.elements, function(input){
return input.type == "text";
});
这是我正在寻找的实际用途。我可以在实际项目中使用某种模式。
答案 0 :(得分:2)
您可以使用迭代器函数来操作列表。
因此,在使用for或while循环之前,现在使用函数。
function isTextNode(node) {
return node.nodeType === Node.TEXT_NODE
}
function extractText(node) {
return node.data
}
function combineText(memo, text) {
return memo += text
}
var text = toArray(nodeList).filter(isTextNode).map(extractText).reduce(combineText)
要习惯“如何或为何有用”停止使用for / while并将数据视为集合或列表,并考虑如何过滤/映射/缩小这些列表以提取数据。
也可以练习不使用闭包,让迭代器函数分离,不要绑定上限值。
答案 1 :(得分:2)
我认为你真正能够使用的第一件事就是bind()方法。
var o = {
act: function() { ...}
}
// Instead of
element.addEventListener("type", function(){ o.act(); }, false)
// you can write
element.addEventListener("type", o.act.bind(o), false)
在命名空间模块中非常有用,其中this
就是一切。
在数据处理方面,数组迭代器方法非常有用。没有具体的例子。