- + JavaScript の質問用スレッド vol.117 +
792 :デフォルトの名無しさん[sage]:2015/02/11(水) 21:56:12.00 ID:Sy5MoPU2 - >>791
Map の OrdinaryCreateFromConstructor の挙動が良くわかりません polyfill を書く場合、どのようなコードになるのでしょう? "2. Let map be OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", ≪?[[MapData]]≫ )." http://people.mozilla.org/~jorendorff/es6-draft.html#sec-map-iterable
|
- + JavaScript の質問用スレッド vol.117 +
794 :デフォルトの名無しさん[sage]:2015/02/11(水) 22:07:01.24 ID:Sy5MoPU2 - >>793
楽してPolyfillライブラリを使うのが目的ではありません 仕組みを知りたいのです ちなみに少なくとも下2つは ES6 に準拠していませんが、本当に理解して紹介していますか?
|
- + JavaScript の質問用スレッド vol.117 +
798 :デフォルトの名無しさん[sage]:2015/02/11(水) 22:16:57.80 ID:Sy5MoPU2 - >>795
ES6 に準拠しているか準拠していないかわからないライブラリを確認するのは無駄ではないでしょうか OrdinaryCreateFromConstructor 部分が ES6 に準拠しているなら参考になりますが、どのライブラリが相当しますか? >>796 OrdinaryCreateFromConstructor の挙動がわからない、と私は書きました 少なくとも、OrdinaryCreateFromConstructor 部分は ES6 に準拠しているべきでは?
|
- + JavaScript の質問用スレッド vol.117 +
800 :デフォルトの名無しさん[sage]:2015/02/11(水) 22:34:43.04 ID:Sy5MoPU2 - >>799
ありがとうございます new Operator から処理を追っていますが、OrdinaryCreateFromConstructor にはたどり着けずにいます http://people.mozilla.org/~jorendorff/es6-draft.html#sec-new-operator > 2. Let map be OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", ≪?[[MapData]]≫ ). 想像するにこんなコードではないかと思いましたが、憶測ゆえに確信が持てず… function Map () {} function MapData () {} Map.prototype = new MapData > つまりインスタンスオブジェクトへのプロトタイプの設定なんかでMapの挙動とは直接関係ないよ。 "23.1.1.1 Map" を一から読んでいまして 2. でいきなりつまずきました
|
- + JavaScript の質問用スレッド vol.117 +
801 :デフォルトの名無しさん[sage]:2015/02/11(水) 22:40:41.53 ID:Sy5MoPU2 - OrdinaryCreateFromConstructor を補足しました
new Operator から辿ると最終的に "9.2.3 [[Construct]]" に行って 5. -> a. に OrdinaryCreateFromConstructor を発見しました http://people.mozilla.org/~jorendorff/es6-draft.html#sec-ecmascript-function-objects-construct-argumentslist-newtarget > a. Let thisArgument be OrdinaryCreateFromConstructor(newTarget, "%ObjectPrototype%"). これは thisArgument = new Object; に相当すると思われます > 2. Let map be OrdinaryCreateFromConstructor(NewTarget, "%MapPrototype%", ≪?[[MapData]]≫ ). 同じ理屈でこれは var map = new MapData; でしょうか (間違いありましたらご指摘下さい)
|
- + JavaScript の質問用スレッド vol.117 +
805 :デフォルトの名無しさん[sage]:2015/02/11(水) 23:28:17.85 ID:Sy5MoPU2 - >>802-803
ありがとうございます ほぼ理解できたと思います >>804 >>803のコードに近づけるなら下記コードのイメージですね function Map(){ this.MapData = Object.create(Map.prototype); }
|