JavaScript: 2008年2月アーカイブ

IE だけグローバル オブジェクトのプロトタイプ オブジェクトが違うというお話です。

Object.prototype.isPrototypeOf(window);
// IE 6: false
// IE 7: false
// Firefox 2.0.0.12: true
// Opera 9.2.6: true
// Safari 3.0.4b: true

Object.prototype に毛を生やしても IE だけ影響を受けませんね。ECMA 262 3rd edition の仕様ではグローバル オブジェクトのプロトタイプ オブジェクトは実装依存だそうです。

また、window に特定のプロパティがあるかどうか知りたい場合に上記の理由で window.hasOwnProperty() とする事が出来ないので…

window.hasOwnProperty("undefined");
// IE: エラー「オブジェクトでサポートされていないプロパティまたはメソッドです。」
// Firefox 2.0.0.12: true
// Opera 9.2.6: false
// Safari 3.0.4b: true

Function#call() または Function#apply() を利用することになります。

Object.prototype.hasOwnProperty.call(window, "undefined");
// IE 6: true
// IE 7: true
// Firefox 2.0.0.12: true
// Opera 9.2.6: false
// Safari 3.0.4b: true

このアーカイブについて

このページには、2008年2月以降に書かれたブログ記事のうちJavaScriptカテゴリに属しているものが含まれています。

前のアーカイブはJavaScript: 2007年6月です。

次のアーカイブはJavaScript: 2008年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.12