2
我宣佈一個JavaScript對象:jQuery的覆蓋「這個」原型
function A(name){
this.name=name
}
A.prototype.test=function(){
console.log(this.name);
};
,因爲我已經設置了一個按鈕,一個簡單的例子,如果它被點擊應輸出變量到本地控制檯日誌:
<button id='test'>test</button>
腳本:
var t=new A('hello');
$('#test').click(t.test);
當我按一下按鈕我想this.name
展示(在這種情況下'hello'),而是this
引用點擊按鈕,而不是我創建的對象。
當然這是一個調試腳本。在現實生活中,我將一個函數綁定到window.resize事件上,該事件將在重新調整大小時重新生成一個窗口。
有一個JSFiddle顯示該問題。
我有這一個解決方案,即是宣告調整大小(或點擊功能)在對象的構造和使用可替代的名稱爲this
,像這樣(Here's the JSFiddle):
function A(name){
this.name=name
var self=this;
$("#test").click(function(){
console.log(self.name);
});
}
但我'而是使用原型並將函數綁定到對象的構造函數中。我如何使用原型來做到這一點?
謝謝!這甚至可以從對象構造函數中調用:$(「#test」)。click(this.test.bind(this));正是我在找什麼! – patrick
@patrick你剛纔說的沒有多大意義。這個調用確保''test'函數被't'調用爲'this'的值。它與調用'$('#test')類似(不完全相同)。click(function(){t.test()};' –
Juan,你說得對,我測試了這個函數,魅力! – patrick