介紹這方面的文章也有一些,我這里打算以一個demo來說明一下,也是基于prototype進行編寫,javascript中的this看起來會和java中的this有些不同。
一個簡單的測試,為了綁定事件到一個按鈕上:




























那么為什么會發(fā)生這樣的狀況呢,其實就是在將按鈕的onclick事件綁定到clickButton造成的,當事件發(fā)生時候當前的對象為button,而不是TestThis,自然這個時候的this也就是button了...
有些時候我們是不希望這樣的,在擁有prototype的情況下我們可以用它提供的bind來解決,將上面的綁定按鈕的onclick事件部分的代碼改為:
$(btn).onclick=this.clickButton.bind(this);
再次執(zhí)行后會發(fā)現(xiàn)這個時候點擊按鈕彈出的提示的值就變?yōu)?TestThis"了,呵呵,其實就是prototype幫忙將這個時候的參數(shù)進行了重新的綁定..
bind和extend是prototype中兩個非常重要的方法,去看prototype.js就會發(fā)現(xiàn),里面很多地方都用到了Object.extend和Function.prototype.bind這兩個函數(shù)...
bind可以起到的作用就象我上面說的..
extend起到的作用則為繼承和擴展,^_^