タグ

ブックマーク / teramako.hatenadiary.org (6)

  • Generator のプロトタイプ - hogehoge @teramako

    904701 - Implement prototype madness for ES6 generators Firefox 26 (Nightly) で function * () { yield ... } な ECMAScript 6th にある Generator の構文が導入された。 ということで、やる気を出して、チョコチョコと調査。 まず、用語の定義 GeneratorFunctionインスタンス function *() { yield "OK"; } の様な関数オブジェクト GeneratorObject GeneratorFunctionから生成されたインスタンスオブジェクト [[prototype]] オブジェクトのプロトタイプチェーンとなる内部プロパティ // GeneratorFunction function * geneFunc () { yield "OK"

    gfx
    gfx 2013/08/31
  • Firefox 25(Nightly) にて、{Map,set}.prototype.forEach が実装された - hogehoge @teramako

    866847 - Implement Map#forEach and Set#forEach テストコード mozilla-central mozilla/js/src/jit-test/tests/collections/Map-forEach.js mozilla-central mozilla/js/src/jit-test/tests/collections/Set-forEach.js これで Map, Set において、ECMAScript 6th 仕様にある全てのメソッド/プロパティが実装されたことになる。 よって、ECMAScript 6th Compatibility Testの簡易的なテストでも全てOKがでる状態となった。 サンプル var m = new Map; m.set("a", "A"); m.set("b", "B"); m.forEach((v, k, M

    Firefox 25(Nightly) にて、{Map,set}.prototype.forEach が実装された - hogehoge @teramako
    gfx
    gfx 2013/07/24
    Sounds great!
  • Firefox 22(Nightly) で ArrowFunction が実装されたが、扱いが難しい - hogehoge @teramako

    Firefox Nightly (22) に ES6のArrow Function来たる - fragmentary ということで、早速試しているわけです。 基 var f1 = () => "OK"; // 引数なしの場合は、"()"が必須 var f2 = arg => arg + 1; // 引数一つなら、"()"は省略可 var f3 = (arg1, arg2) => arg1 + arg2; // 複数の引数の場合は"()"必須 var f4 = arg => { // ステートメントを入れる場合は "{}" でブロックを生成する if (arg) return "OK"; else return "NG"; }; // オブジェクトを返す場合は、ブロックと間違われないように // ({...}) と () 等を使用する var f5 = () => ({ a: "A", b

    Firefox 22(Nightly) で ArrowFunction が実装されたが、扱いが難しい - hogehoge @teramako
    gfx
    gfx 2013/03/21
  • ECMAScript 6th, Harmony と JS++ - hogehoge @teramako

    Web Reflection: ES6, Harmony, and JS++ http://www.3site.eu/JSNext.pdf [PDF] 内容がとても面白い。 Mozilla JavaScripterなら知っているものは多そうだが。 SpiderMonkeyで独自に採用されているものが将来的にECMAScriptに採用されて仕様に載ると良いなと思う。 ということで内容を紹介と個人的メモ ブロックスコープ let JavaScriptで変数宣言というと、var一択で、これは関数ブロックに対するスコープとなり、真のブロックスコープは存在しない。 ということでletってのが登場。 for文、ifのブロック内でのスコープを提供できるよ。 for (let i = 0; i < 3; i++){ // ...; } typeof i; // undefined iはfor文内のみのスコ

    ECMAScript 6th, Harmony と JS++ - hogehoge @teramako
  • console.log は printf 相当の機能が一部ある - hogehoge @teramako

    ある値を非同期で取ってくる→その値を使ってさらに非同期処理というのをJSDeferredでする - Islands in the byte stream 何気なく書かれているけど、console.log('got %s', foo);という部分があり、おや?と思った。 もしかして、Node.js 以外でも使えたりする? と調査。 まず、Operaは使えなかったので除外。 CodeGoogleChormeFirefox console.log("%s", "hoge")hogehoge console.log("%s", "hoge", "foo")hoge foohoge foo console.log("%s", "hoge", {foo:"FOO"})hoge ▸Objecthoge ({foo:"FOO"}) console.log("%d", 10)1010 console.log

    console.log は printf 相当の機能が一部ある - hogehoge @teramako
    gfx
    gfx 2012/01/05
    Nodeだと%jでJSON出力もできたりして便利です。 cf. http://nodejs.org/docs/latest/api/stdio.html#console.log
  • ECMAScript 6th の構文をまとめてみた - hogehoge @teramako

    harmony:specification_drafts [ES Wiki] ECMAScript 6thのドラフト版が挙げられている。現在はSeptember 23, 2011のドラフトが最新で、このドラフトの構文部分のみを抜粋してHTML化してみた。 ECMAScript Syntax Grammar 6th Edition / Draft よろしければ、どうぞ。 構文上で、5thとの大きな違いは、 let, constによる変数、定数宣言の導入 AssignmentPatternやBindingPattern辺りが導入されている ...が導入されている 辺りでしょうか。 BindingPattern これは何かっていうと、オブジェクトや配列(Array)の中身の要素を直に変数に入れられるようになる。BindingPatternにはObjectBindingPatternとArrayB

    ECMAScript 6th の構文をまとめてみた - hogehoge @teramako
    gfx
    gfx 2011/10/06
    let/constってES6だったのか。
  • 1