-1

借助ES5-Shim等库,我们现在可以使用新的热点。现在可以使用数组上的许多方法(如forEachmap、等)来编写干净漂亮的代码。every

我想要一个列表,列出我现在可以在使用当前浏览器的 API(例如 DOM)或仅使用 javascript 时使用这些新方法的实际用途。

我说的是这种:

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";
});

这是我正在寻找的实际用途。我可以在实际项目中使用某种模式。

4

2 回答 2

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一切都在哪里。

数组迭代器方法在数据处理方面非常有用。没有具体的例子。

于 2012-04-05T13:44:02.303 回答
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 并将您的数据视为集合或列表,并考虑如何过滤/映射/减少这些列表以提取数据。

还要做一个练习,不要使用闭包,让你的迭代器函数分开,而不是绑定上值。

于 2012-04-05T13:37:44.163 回答