ES5提供的新方法有哪些实际用途?

时间:2012-04-05 13:30:01

标签: javascript ecmascript-5

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

我希望在使用当前浏览器的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";
});

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

2 个答案:

答案 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就是一切。

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

相关问题