Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES5提供的新方法的实际用途是什么?_Javascript_Ecmascript 5 - Fatal编程技术网

Javascript ES5提供的新方法的实际用途是什么?

Javascript ES5提供的新方法的实际用途是什么?,javascript,ecmascript-5,Javascript,Ecmascript 5,有了这样的库,我们现在就可以使用新的hotness了。现在可以使用数组上的许多方法(如forEach、map、every等)来编写干净漂亮的代码 我想要一个列表,列出在使用当前浏览器的API(如DOM)或javascript时,我现在可以使用这些新方法的实际用途 我说的是这种: var nodes = document.getElementsByClassName('class') [].forEach.call(nodes, callback) function callback(node)

有了这样的库,我们现在就可以使用新的hotness了。现在可以使用数组上的许多方法(如
forEach
map
every
等)来编写干净漂亮的代码

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

我说的是这种:

var nodes = document.getElementsByClassName('class')
[].forEach.call(nodes, callback)
function callback(node) {
    console.log(node)
}
另一个例子来自:


这就是我想要的实用性。我可以在实际项目中使用某种模式。

您可以使用迭代器函数来操作列表

所以在使用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)
要习惯“如何或为什么有用”,请停止使用/while,将数据视为集合或列表,并思考如何过滤/映射/减少这些列表以提取数据


另外,做一个练习,不要使用闭包,不要将迭代器函数分开,也不要绑定到upvalue上。

我认为,您真正能够使用的第一件事是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)
这在带名称空间的模块中非常有用,其中
这个
就是一切


当涉及到数据处理时,数组迭代器方法非常有用。没有具体的例子。

伙计,你的分号在哪里<代码>:P和ES5函数提供了更具声明性的语法。我建议大家通读。@ŠimeVidas我把它们都烧了,都烧了@ŠimeVidas:我不喜欢它们!ASI可以做得很好,我的代码也很干净。但这不是问题的关键:)@zzbov:我只是在寻找真实的例子,而不是理论。
var o = {
    act: function() { ...}
}
// Instead of
element.addEventListener("type", function(){ o.act(); }, false)
// you can write
element.addEventListener("type", o.act.bind(o), false)