调用父原型方法
Invoke parent prototype method
"我在理解方面有问题。我的一段代码:
//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?还是只有一个解?谢谢。
问题是事件处理程序中的上下文是窗口,而不是您的Widget
。
Widget.prototype.init = function () {
var addRowButton = document.getElementsByName("addRow")[0];
addRowButton.addEventListener("click", this.addRow, false);
};
Widget.prototype.init = function () {
var _this = this;
var addRowButton = document.getElementsByName("addRow")[0];
addRowButton.addEventListener("click", function(){_this.addRow()}, false);
};
在评论中编辑您的问题:
你似乎想要
Widget.prototype._addEditFormString.call(this);
相关文章:
- 使用“;这个“;JavaScript原型方法中的关键字
- 引用类变量中的原型方法
- 如何从对象的原型方法访问JavaScript对象属性
- 什么意思是“;向原型添加方法”;
- 如何将原型用于自定义方法和对象操作
- 如何从构造函数中调用js原型方法
- Javascript不调用原型方法
- jQuery如何在原型中调用方法
- 为什么不't loadash/aunderline将util方法放在数组原型上
- 有没有任何情况下,一个方法不应该是原型方法
- 调用影子原型方法的更简单/更好的方法
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- 用于数组原型的JavaScript独特方法
- 当对象从服务器发送到客户端时,JS原型方法消失了
- 构造 JavaScript Array 原型方法
- 无法将方法原型添加到 JavaScript 对象
- Javascript对象方法原型
- 将方法原型化为子对象
- 继承方法(原型)和静态方法(表达式)的区别是什么?
- javascript中的闭包方法原型