Re: __proto__ が変わりゆく件について

さすがにちょっとツッコミを入れたい。

参考: draft_proto_spec_rev2.pdf

※ まだドラフトで確定ではないのでご注意ください。

http://nextdeveloper.hatenablog.com/entry/2013/12/15/191719

注釈があるとはいえ、今この時期にこのPDFは古いです。

現在のES6 Draft仕様のリビジョンは21です。rev2の仕様を引っ張り出してくるのはどうかと…。

大筋では特に言うことは無いのだが、以下の点に関してはツッコんでおきたい

  • Enumerable: true はありえない(for-in で列挙されてしまうよ!?)
  • UnderscoreProtoEnabled という内部プロパティは、消されている

ついでに、最近のドラフトでは、__proto__のデスクリプタは [[Enumerable]]: false, [[Configurable]]: true な Setter/Getter とされている。Setter/Getterなので [[Writable]]: true でもない。

ここから先は私見

さらに、ES5.1の Object.getPrototypeOf とともに、ES6 ではObject.setPrototypeOf も定義される。よって、__proto__ プロパティは要らない子である。

明日から、JavaScript コードの先頭に

delete Object.prototype.__proto__;

と書くことを心がけよう!

:wq