事件创建中的Javascript绑定对象
javascript bind object in event creation
我实际上被困在一个简单的例子上。
<div id="first">first</div>
<div id="second">second</div>
<script>
var JSClass = {
element : null,
click : function() {
console.log(this.element.id);
},
created : function(element) {
this.element = element;
this.element.addEventListener('click', this.click.bind(this));
}
};
JSClass.created(document.querySelector('#first'));
JSClass.created(document.querySelector('#second'));
</script>
当我创建事件时,通过绑定整个对象,当我点击第一个元素时,我应该获得"first",当我点击第二个元素时,我应该获得"second",但事实并非如此。对于我使用的其他对象,它是完全可用的,但这个简单的例子不起作用。
你不是在创建一个类,你是在创建一个对象。
所以每次你在那个对象上调用.created
,你都在重写里面的元素。
尝试使用Object.create
制作两个不同的对象
var JSClass = {
element : null,
click : function() {
console.log(this.element.id);
},
created : function(element) {
this.element = element;
this.element.addEventListener('click', this.click.bind(this));
}
};
var first = Object.create(JSClass);
var second = Object.create(JSClass);
first.created(document.querySelector('#first'));
second.created(document.querySelector('#second'));
小提琴
如果你希望你的对象表现得像一个类,你可以像这样使用函数闭包:
var JSClass = function(element) {
this.element = element;
element.addEventListener('click', click.bind(this));
function click() {
console.log(this.element.id);
}
};
new JSClass(document.querySelector('#first'));
new JSClass(document.querySelector('#second'));
<div id="first">first</div>
<div id="second">second</div>
可以使用class
,将this.element
设置为element
传递给构造函数
<div id="first">first</div>
<div id="second">second</div>
<script>
class JSClass {
constructor(element) {
this.element = element;
}
created() {
this.element
.addEventListener('click', this.click.bind(this));
}
click() {
console.log(this.element.id);
}
};
let first = new JSClass(document.querySelector('#first'));
let second = new JSClass(document.querySelector('#second'));
first.created();
second.created();
</script>
相关文章:
- 如果数据绑定对象只有它的名称,那么敲除如何知道它
- 如何使用普通js绑定对象以更新值
- Knockoutjs 绑定对象问题
- 如何将 require('') 对象传递到绑定对象的作用域中
- 如果 ajax 刷新了绑定对象,则 .submit 不起作用
- 角度无意绑定/对象镜像
- 在 JavaScript 中传递绑定对象方法
- 循环绑定对象
- 我应该如何在ng重复中绑定对象的值
- Knockout js:用于绑定对象而不是单个值的代码
- Paper.js Z索引和绑定对象
- AngularJS-绑定对象列表
- 如何在指令的link函数中对绑定对象做出反应
- 事件创建中的Javascript绑定对象
- 删除元素时是否需要清除绑定对象?
- 为绑定对象添加属性
- javascript绑定对象's原型函数
- AngularJS用复选框绑定对象
- 有没有可能保护'this'引用绑定对象内的函数
- Angular绑定对象元素到HTML