会社でちょっと話題に上ったので軽く試してみた
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な実装がそうとは限らないことにご注意を。