Javascript 使用';这';变量
我试图将一个类方法附加到一个元素,以便它引用该类的实例 //范例Javascript 使用';这';变量,javascript,es6-class,Javascript,Es6 Class,我试图将一个类方法附加到一个元素,以便它引用该类的实例 //范例 class Default{ constructor(){ this.parent = null } assemble(){ var form = document.createElement('form'); //CREATE FORM ELEMENT var btn = document.createElement('button'); //CREATE
class Default{
constructor(){
this.parent = null
}
assemble(){
var form = document.createElement('form'); //CREATE FORM ELEMENT
var btn = document.createElement('button'); //CREATE BUTTON ELEMENT
this.parent = form; //DECLARE PARENT (CONSTRUCTOR)
btn.type = 'button';
btn.innerHTML = 'click me';
btn.addEventListener('click',this.submit);
form.appendChild(btn);
return form;
}
}
class Form extends Default{
submit(){
console.log(this.parent); //should return instantiated form value for property parent but doesn't (undefined)
console.log(this); //returns reference to the button element itself not the class (Form)
}
}
//叫
var route={
init:()=>{
var form = new Form();
var formBuild = form.assemble();
document.body.appendChild(formBuild);
}
};
document.addEventListener('DOMContentLoaded',route.init);
问题:为什么表单类方法
submit()
返回的是按钮元素本身而不是实例化的类?您的问题有点让人困惑,我用您的代码创建了一个表单类,一切都按照我的预期进行。你想要得到的结果到底是什么?@Dario我试图让按钮返回父元素,在本例中它将是表单元素this.parent
,但this
根本不引用实例化的对象。为了确保,在代码笔中,我链接了this。父项引用表单本身,但您希望this
也返回表单?@Dario否,因此您的代码笔示例调用表单对象上的submit
方法,我的示例通过按钮元素上的单击事件调用它。问题仅仅是如何绑定submit
方法,以及调用时如何决定此
btn.addEventListener('click',this.submit.bind(this))
Change btn.parent=form//声明父项(构造函数)代码中有什么更改吗?为什么这样做,为什么原始代码不起作用?请你的答案包括一个解释。Bergi,我改变了这个。parent=表单//向btn声明父级(构造函数)。父级=窗体;这个.parent到btn.parents但是为什么呢?现在它做错事了。
class Default{
constructor(){
this.parent = null
}
assemble(){
var form = document.createElement('form'); //CREATE FORM ELEMENT
var btn = document.createElement('button'); //CREATE BUTTON ELEMENT
btn.parent = form; //DECLARE PARENT (CONSTRUCTOR)
btn.type = 'button';
btn.innerHTML = 'click me';
btn.addEventListener('click',this.submit);
form.appendChild(btn);
return form;
}
}