-1

ES5-Shimなどのライブラリを使用すると、新しいホットネスを使用できるようになります。配列の多くのメソッド(、、、forEachなど)を使用してmap、クリーンで美しいコードを記述できるようになりました。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 に答える