事件创建中的javascript绑定对象
事实上,我被一个简单的(很确定是这样的)例子困住了事件创建中的javascript绑定对象,javascript,html,events,bind,Javascript,Html,Events,Bind,事实上,我被一个简单的(很确定是这样的)例子困住了 首先 第二 var JSClass={ 元素:null, 单击:函数(){ console.log(this.element.id); }, 创建:函数(元素){ this.element=元素; this.element.addEventListener('click',this.click.bind(this)); } }; JSClass.created(document.querySelector('first'); JSClass.c
首先
第二
var JSClass={
元素:null,
单击:函数(){
console.log(this.element.id);
},
创建:函数(元素){
this.element=元素;
this.element.addEventListener('click',this.click.bind(this));
}
};
JSClass.created(document.querySelector('first');
JSClass.created(document.querySelector(“#second”);
通过在创建事件时绑定整个对象,我应该在单击第一个元素时获得“first”,在单击第二个元素时获得“second”,但事实并非如此。
对于我使用的其他对象,它是完全功能的,但这个简单的例子不起作用…如果您希望对象的行为像类一样,可以使用如下函数闭包:
var JSClass=函数(元素){
this.element=元素;
元素addEventListener('click',click.bind(this));
函数单击(){
console.log(this.element.id);
}
};
新的JSClass(document.querySelector('first');
新的JSClass(document.querySelector(“#second”)代码>
首先
其次,您不是在创建类,而是在创建对象
因此,每次对该对象调用.created
,都会覆盖其中的元素
尝试使用对象。创建以创建两个不同的对象
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'));
您可以使用类
,将此元素
设置为传递给构造函数的元素
首先
第二
类JSClass{
构造函数(元素){
this.element=元素;
}
创建(){
这个元素
.addEventListener('click',this.click.bind(this));
}
单击(){
console.log(this.element.id);
}
};
let first=newjsclass(document.querySelector(“#first”);
let second=新的JSClass(document.querySelector('#second');
首先,创建();
第二,创建();
只涉及一个对象。当您第二次调用.created()
时,它会覆盖您第一次调用时设置的“element”属性的值。将JSClass
更改为返回对象的函数。谢谢,我认为这是最好的现代方法。您对“类”与“对象”的看法是正确的。这是我这边的错误。在我的描述中,我只谈到对象,对象的名称是JSClass;)
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'));