1
「我有認識一塊我的代碼的問題:調用父原型法
//constructor
function Widget (options) {
};
//return the string
Widget.prototype._addEditFormString = function (val) {
return "<input type='text' value='" + val + "' >";
}
//initializing method
Widget.prototype.init = function() {
var addRowButton = document.getElementsByName("addRow")[0];
addRowButton.addEventListener("click", this.addRow, false);
};
//this context in this method still confusing me
Widget.prototype.addRow = function() {
console.log(this._addEditFormString);//Uncaught TypeError: Object #<HTMLInputElement> has no method '_addEditFormString'
}
var wid = new Widget();
wid.init();
問題 - 在init()方法我添加事件偵聽器(addRow方法),但在addRow方法我不。知道如何捕捉我的構造類的「this」,因爲我想調用_addEditFormString()方法,但接收到「未捕獲的TypeError:Object [object Window]沒有方法'_addEditFormString'」。我如何解決沒有Widget.prototype ._addEditFormString?或者只有一個解決方案?謝謝。
感謝您的回答,但在addRow()中捕獲「this」的問題會導致addEventListener在「this」中傳遞爲BUTTON。如何調用Widget.prototype._addEditFormString()像this._addEditFormString()? – 2013-03-06 14:58:33
@ user1506183我不確定我是否收到你的問題,但是我編輯了我的答案。 – 2013-03-06 15:00:36
是的。得到這個,非常感謝函數(){_ this.addRow()}解決我的問題) – 2013-03-06 15:03:01