2007年9月30日 星期日

這位 this, 你是那來的?

javascript的this是一個十分動態的東西,要小心的使用
例如:

function foo(){
this.varA = "haha";
function bar(){
alert(this.varA);
}
}

var myFoo = new foo();
然後 html 裏讓一個 div onclick之後觸發 foo.bar()....:

如果真的click 下去,alert 出來不會是"haha"會是undefined,神奇吧。原因是當下的this已經不是我們預想的foo,而是div啦…
這種事真的蠻討厭的。一不小心就會忘記,不然就是要變成…

function foo(){
this.varA = "haha";
var me = this;
function bar(){
alert(me.varA);
}
}
結果就會是正確的…
為什麼? 不要問我…="=

沒有留言: