在事件处理程序中获取原型
Get prototype inside an eventhandler
我正在尝试将原型放入事件处理程序中。
function Post(){
this.post;
this.deleteButton;
}
Post.prototype.delete = function(){
var OBJ = this;//this is not the prototype, instead it is the HTML element (deleteButton)
$(OBJ.container).remove();
}
Post.prototype.createPost = function(){
var OBJ = this;
OBJ.post = document.createElement('div');
OBJ.post.className = 'post'
OBJ.deleteButton = document.createElement('div');
OBJ.deleteButton.addEventListener('click', OBJ.delete, false);
}
看看上面的评论部分。删除处理程序被声明为Post
的原型方法。我将删除处理程序分配给一个删除按钮。问题是this
变成了HTML元素,而不是对象原型。
编辑:
我还希望有机会删除删除处理程序
像这样:
OBJ.deleteButton.addEventListener('click', function() {
OBJ.delete();
}, false);
但OBJ
不是原型,它指的是实例。
更新:如果您也想删除它,请存储对它的引用:
this.deleteHandler_ = function() {
OBJ.delete();
};
OBJ.deleteButton.addEventListener('click', this.deleteHandler_, false);
其他地方:
this.deleteButton.removeEventListener('click', this.deleteHandler_);
在jQuery中,您可以使用$.proxy:
var onDelete = $.proxy(OBJ.delete, OBJ);
OBJ.deleteButton.addEventListener('click', onDelete, false);
还有ECMAScript 5绑定方法:
var onDelete = OBJ.delete.bind(OBJ);
OBJ.deleteButton.addEventListener('click', onDelete, false);
删除侦听器:
OBJ.deleteButton.removeEventListener('click', onDelete, false);
Post.prototype.createPost = function(){
var OBJ = this;
OBJ.post = document.createElement('div');
OBJ.post.className = 'post'
OBJ.deleteButton = document.createElement('div');
OBJ.deleteButton.addEventListener('click', function(){OBJ.delete();}, false);
}
如果你使用的是jquery,你可以使用代理方法:
OBJ.deleteButton.addEventListener('click',$.proxy(OBJ.delete,OBJ), false);
相关文章:
- 获取原型对象的名称
- 获取函数原型的源代码
- 如何获取Javascript对象原型的属性
- 从字符串原型javascript获取字符串值
- 从XML中获取播放列表项的新原型
- 获取调用属于其属性或名称空间原型之一的函数的对象
- 如何在数组原型图中获取当前索引
- Javascript,从原型函数自己的字段中获取“this”
- 在原型定义中获取此函数的名称
- Javascript - 获取原型以返回生成器
- 如何获取原型属性列表
- 使用原型在标签中获取值 for
- 如何使用原型获取/设置 cookie.js
- Javascript:获取此原型对象名称
- 获取原型链中的查找数
- ES6用于获取原型值-如何检查hasownproperty
- 在javascript的构造函数本身中获取原型构造函数的名称
- 获取原型函数下的对象类型
- 在事件处理程序中获取原型
- 初始化后获取原型对象的属性