IE8のfor文に関する挙動の問題点と対策
他のブラウザとIE8の違い
前回の記事「IE8で不具合」に触れておいたバグを修正しました。
今回は、このバグの原因となったfor文の挙動について、備忘録として書き残しておきます。
for...in文 (IE8以外のブラウザの場合)
for...in文を使って、オブジェクトのプロパティを取り出してみましょう。
for (var i in { constructor: 12, hasOwnProperty: 15 }) { console.log(i); }
もし、このコードをIE8以外のブラウザで実行すれば、コンソールには、
construtor hasOwnProperty
と表示されます。
for...in文 (IE8の場合)
ところが、Win XPのIE8でさっきのコードを実行しますと、コンソールには、なにも表示されないのです。どういうことかというと、Object.prototypeで登録されてそうなプロパティが、IE8では無視されるようなのです。
SIEで修正
そこで、SIEでは、base.jsのmixメソッドを使うときには、constructorメソッドではなくて、initializeメソッドを用いるように改善しました。その結果、スペックを通るようになりました。
今後の予定
base.jsの高速化を試みます。また、IE8で、テストスイートのテストをします。