高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

JScriptでの関数オーバーライド

会社でちょっと話題に上ったので軽く試してみた

function a()
{
  WScript.Echo("a");
}

a = function(){ WScript.Echo("override!"); }
a();

=> override!
JScriptでは関数はこうやって簡単にオーバーライド(というのか?)できるようです。


はて、これって、Globalオブジェクトのメソッドでも出来るのか?
ということでちょっと書いてみました。

function a()
{
  WScript.Echo(parseInt(1));
}

parseInt = function(){ return "override!"; }
a();

=> override!

なんと・・・。
Globalオブジェクトのメソッドであろうとこんな感じでオーバーライドできるようです。組み込み関数であっても気軽に挙動を変えたり出来るようですね。もちろんそんなことするべきでないのは言うまでもありませんが。


※ あくまでIEのJScriptの話であって、別にほかのJavascriptな実装がそうとは限らないことにご注意を。