var object = new Object();世の中のJavaScriptのプログラムはこのルールを前提に作られているものも少なくないと思います。このルールはIEやNN(Firefox)、Operaなど需要ブラウザのJavaScriptエンジンで実装されているので基本的に問題は起こらないのですが、Rhinoでは問題になります。Rhinoでは上記のオブジェクトからfor inでプロパティを取り出すとc、d、a、bの順に取り出されます。値と定義の順序を変えても同じ順序で取り出されるので名前を元に何らかのルールでソートしているようです。
object.a = 3;
object.b = 2;
object.c = 1;
object.d = 0;
そのため、もしJ2SE 6.0のjrunscriptなどJavaScriptエンジンがRhinoの環境で動くプログラムを書く場合は、for inで取り出されるプロパティの順序に注意してコーディングする必要があります。
以下に私が把握している限りで、各JavaScriptエンジンのプロパティの順序性について示しておきます。(全てWindows環境のものです)
■プロパティの定義順
- Internet Explorer
- Netscape Navigator
- Mozilla(Firefox)
- Opera
- Safari
- Windows Script Host
- Rhino
Learning jQuery: Better Interaction Design and Web Development With Simple Javascript Techniques Jonathan Chaffer Karl Swedberg by G-Tools |
0 件のコメント:
コメントを投稿