javascriptってこんな事できるんだ。。。
javascriptのメソッドって動的に自分自身で書き換える事が出来るのかなー。
とふと思い、気になったので書いてみた。
var foo = {
alert: function(num) {
alert("Hello !!");
this.alert = function(num) {
alert("World");
alert(num);
}
}
};
foo.alert(1);
foo.alert(2);
foo.alert(3);
/******* 結果 ******/
Hello
World
2
World
3
********************/
おお!!出来た!
ということは、
var foo = {
init:function(){
this.loadEvent(null);
},
loadEvent:function(handler){
if (window.attachEvent){
this.loadEvent = function(handler){
window.attachEvent("onload",handler);
};
} else {
this.loadEvent = function(handler){
window.addEventListener("load",handler,false);
};
}
}
};
foo.init();
foo.loadEvent(function(){alert("load1");});
foo.loadEvent(function(){alert("load2");});
foo.loadEvent(function(){alert("load3");});
の用にブラウザの差異によるif文のオーバーヘッドを1回に出来るメソッドが書ける。
ブラウザの差異をチェックする条件式が複雑、多い場合は有効。。。なのかな?