タグ付けされた質問 「ecmascript-harmony」

10
セットを配列に変換する方法は?
Setは、一意の要素が保証された配列を作成するための優れた方法のように見えますが、ジェネレーター[Set] .valuesを除いて、プロパティを取得するための適切な方法を公開していませんmySet.values.next()。 mapセットで同様の関数を呼び出すことができれば、これで問題ありません。しかし、それもできません。 私は試しましたがArray.from、配列のような(NodeListとTypedArrays?)オブジェクトのみをArrayに変換しているようです。別の試み:Object.keysSetでは機能せず、Set.prototypeにも同様の静的メソッドがありません。 それで、質問:与えられたセットの値を持つ配列を作成するための便利な組み込みメソッドはありますか?(要素の順序は重要ではありません)。 そのようなオプションが存在しない場合、おそらくそれを行うための素晴らしい慣用的なワンライナーがありますか?のように、を使用してfor...of、または同様の?

9
ECMAScript 6でアロー関数を使用する必要があるのはいつですか?
質問は、来たるECMAScript 6(ハーモニー)のコンテキストでコードスタイルについて考え、すでに言語を使用したことがある人を対象としています。 () => {}し、function () {}我々はES6で関数を作成するには、2つの非常に類似した方法を取得しています。他の言語では、ラムダ関数は匿名であることで区別されることがよくありますが、ECMAScriptでは任意の関数を匿名にすることができます。2つのタイプにはそれぞれ固有の使用法ドメインがあります(this明示的にバインドする必要がある場合、または明示的にバインドしない必要がある場合)。これらのドメイン間では、どちらの表記でも十分なケースが多数あります。 ES6の矢印関数には、少なくとも2つの制限があります。 動作しませんnewし、作成時に使用することはできませんprototype this初期化時にスコープに固定された これらの2つの制限は別として、矢印関数は理論的にはほとんどどこでも通常の関数を置き換えることができます。実際にそれらを使用する正しいアプローチは何ですか?矢印関数を使用する必要があります。例: 「どこでも機能する」、つまりどこでも関数はthis変数にとらわれる必要がなく、オブジェクトを作成していません。 「必要なところすべて」、つまり特定のスコープにバインドする必要があるイベントリスナー、タイムアウトのみ 「短い」関数ではあるが「長い」関数ではない 別の矢印関数を含まない関数のみ 私が探しているのは、ECMAScriptの将来のバージョンで適切な関数表記を選択するためのガイドラインです。ガイドラインは、チーム内の開発者に教えることができるように明確にする必要があり、関数の表記法間で一定のリファクタリングが必要にならないように一貫している必要があります。

7
シンボルをES6に導入する動機は何ですか?
更新:最近、Mozillaからの素晴らしい記事が登場しました。興味があれば読んでください。 ご存じかもしれませんが、彼らはECMAScript 6 に新しいSymbolプリミティブ型を含めることを計画しています(他のクレイジーなものは言うまでもありません)。:symbolRuby の概念は不必要だといつも思っていました。JavaScriptの場合のように、代わりにプレーンストリングを簡単に使用できます。そして今、彼らはJSで物事を複雑にすることにしました。 動機がわかりません。JavaScriptでシンボルが本当に必要かどうか誰かに説明してもらえますか?


9
JavaScriptセットのオブジェクト等価性をカスタマイズする方法
新しいES 6(ハーモニー)は新しい Setオブジェクトがます。Setで使用されるIDアルゴリズムは===演算子に似ているため、オブジェクトの比較にはあまり適していません。 var set = new Set(); set.add({a:1}); set.add({a:1}); console.log([...set.values()]); // Array [ Object, Object ] 深いオブジェクト比較を行うためにSetオブジェクトの等価性をカスタマイズする方法は?Javaのようなものはありますかequals(Object)か?

19
ES6(ECMAScript 6)で可変変数なしでx回ループするメカニズムはありますか?
xJavaScriptで時間をループさせる一般的な方法は次のとおりです。 for (var i = 0; i < x; i++) doStuff(i); しかし、++演算子を使用したり、可変変数を使用したりしたくありません。では、ES6でx別の方法でループ時間をとる方法はありますか?Rubyのメカニズムが大好きです。 x.times do |i| do_stuff(i) end JavaScript / ES6で似ているものはありますか?私はちょっとごまかして、自分のジェネレータを作ることができました: function* times(x) { for (var i = 0; i < x; i++) yield i; } for (var i of times(5)) { console.log(i); } もちろん私はまだ使っていi++ます。少なくともそれは見えません:)、しかし私はES6にもっと良いメカニズムがあることを望んでいます。

11
ES 6のオブジェクトからいくつかのプロパティを取得するためのワンライナー
ES6で最もコンパクトな方法で少数の属性のみを取る関数をどのように作成できますか? 解体+単純化されたオブジェクトリテラルを使用した解決策を考え出しましたが、フィールドのリストがコード内で繰り返されるのが嫌いです。 さらにスリムなソリューションはありますか? (v) => { let { id, title } = v; return { id, title }; }

1
JavaScriptの二重コロン(バインド演算子)
ご存知のように、.bind()関数のショートカットの提案があるので、次のように書くことができます。 ::this.handleStuff es5でも同様に機能します。 this.handleStuff.bind(this) 私の質問は、このように引数を渡すことは可能ですか? 前述のショートカットでこれを書く方法を意味します: this.handleStuff.bind(this, 'stuff') Reactではかなり一般的なパターンなので、少し短くしておくとよいでしょう。

6
ES6オブジェクトのメソッド:矢印関数の使用
ES6では、これらは両方とも合法です。 var chopper = { owner: 'Zed', getOwner: function() { return this.owner; } }; そして、速記として: var chopper = { owner: 'Zed', getOwner() { return this.owner; } } 新しい矢印機能も使用できますか?のようなことを試みることで var chopper = { owner: 'John', getOwner: () => { return this.owner; } }; または var chopper = { owner: 'John', getOwner: …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.