ActionScriptとJavaScriptの違いでハマる

ActionScriptもJavaScriptも、どっちもECMAScriptに準拠していているから、コアな部分ではほとんど同じだろうと思っていたら、ハマった・・・(MacIE)。

いつもASでやるように、
var a = new Array();
a.push({b:1, c:"22", d:333});
とやったらエラー。
Google先生曰く、「MacIEはArrayクラスでpushをサポートしてねぇ」だそうで。マジすか。どうもWinIE5.0あたりもそうみたい。
結局、pushは使わずにすることでクリア。

で、SWFObjectのソースを読みまくっていたら、こんな記述が(インデントなどはこちらでつけたもの)。
if(Array.prototype.push == null){
	Array.prototype.push = function(_31){
		this[this.length] = _31;
		return this.length;
	};
}
MacIEなどではArrayのpushを自作しているのか!
すごいっ!すごすぎる!!
すかさずprototype.jsはどうなってんだろうと思って調べたら、こっちも同じくサポートしてるっ!

SWFObjectにしてもprototypeにしても、先人は凄いなぁ。
ホント勉強になりまっす!

[ 2006/12/8 追記 ]
prototype.jsのソース見たり、いろいろ検索してみたら、prototype.jsでもサポートしていないっぽいです・・・。prototype.jsってIE6からを対象にしているようですね。

Trackbacks

Trackback URL: http://blog.naggg.jp/mt/mt-tb.cgi/44

Send Your Comment