トップページ > プログラム > 2015年02月11日 > Sy5MoPU2

書き込み順位&時間帯一覧

10 位/221 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000001416



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
+ JavaScript の質問用スレッド vol.117 +

書き込みレス一覧

+ 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);
}


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。