Blobがコンストラクタに

ちょっと前にFirefoxがBlob constructorを実装した。

使えるのはFx14からかなあ。とりあえずNightlyではエラーを出さずにBlobオブジェクトが返ってきた。
→Aurora (13)でも使えた!

あ、何かというと、new Blob(...)ってやってBlobオブジェクトを生成するもの。
これまでBlobを作るのはBlobBuilderだったけど、基本的に必要なくなる。

コンストラクタの引数は、データになるものを入れた配列と、あとオプションのディクショナリ。
配列はBlobBuilder.append()に渡せるものと同じくArrayBuffer, DOMString, Blobであればよくて、あと数も何個でもよい。

ディクショナリはWebIDLに導入されたもので、Blobではtypeendingsの指定に使われている。DOM4とかだとイベントに使われているPythonのと同じかなと思ったけど、WebIDLの仕様にはan associative array data type with a fixed, ordered set of key–value pairsとある。ESだとオブジェクトってunorderedだよねえ。なんでだろう。

コンストラクタ化は昨年10月に「BlobをコンストラクタにしたらBlobBuilder要らなくねって話がでたんだけどどうよ?」みたいなスレッドがたって、そこで話されていたもの。確かにーと思ってたんだけど、1月にEDに追加されていたみたい。知らなかった。

ArunのメールによるとHarmonyのRest paramsを配列の代わりに使うことも考えられてるみたい。未来だなあ。

追記 (2012-03-20) MozBlobBuilderでwarningが出るように

早速こんな変更がmozilla-centralに。

コンストラクタができたからMozBlobBuilderいらないだろう的なことで、Fx14からはwarningが出る。

しかし、MicrosoftもIE10でMSBlobBuilder(あ、MsじゃなくてMSなんだ)実装してるし、プラットフォームから消せるのかなあ。でもコンストラクタのほうが好きではある。