Javascript 为什么';向数组中添加联系人的工作方法?
我在方法中添加了一个新联系人:Javascript 为什么';向数组中添加联系人的工作方法?,javascript,oop,ecmascript-6,local-storage,Javascript,Oop,Ecmascript 6,Local Storage,我在方法中添加了一个新联系人:addToBook()。首先我检查字段,如果它们不是空的,然后我创建类LocalStorage的实例,并传递字段值并从中生成JSON 我想在阵列和LocalStorage中查看新产品,但我得到了错误: Uncaught TypeError: Can not read property 'push' of undefined" 帮我修一下 class联系人{ 构造函数(){ //存储阵列 this.contacts=[]; } addToBook(){ 让isNu
addToBook()
。首先我检查字段,如果它们不是空的,然后我创建类LocalStorage
的实例,并传递字段值并从中生成JSON
我想在阵列和LocalStorage
中查看新产品,但我得到了错误:
Uncaught TypeError: Can not read property 'push' of undefined"
帮我修一下
class联系人{
构造函数(){
//存储阵列
this.contacts=[];
}
addToBook(){
让isNull=forms.name.value!='&&forms.phone.value!=''&&
forms.email.value!='';
if(isNull){
//将输入格式化为有效的JSON结构
设obj=newlocalstorage(forms.name.value,
forms.phone.value、forms.email.value);
本。触点。推(obj);
localStorage[“addbook”]=JSON.stringify(this.contacts);
console.log(this.contacts);
}
console.log(this.contacts);
}
}
让联系人=新联系人();
班级形式{
构造函数(){
//块
this.addNewContact=document.getElementById(“addNewContact”);
this.registerForm=document.querySelector('.addNewContact form');
//形式
this.fields=document.forms.register.elements;
this.name=this.fields[0]。值;
this.phone=this.fields[1]。值;
this.email=this.fields[2]。值;
//钮扣
this.cancelBtn=document.getElementById(“取消”);
this.addBtn=document.getElementById(“添加”);
this.BookDiv=document.querySelector('.addbook');
//显示表单div
this.addNewContact.addEventListener(“单击”,(e)=>{
this.registerForm.style.display=“block”;
if(this.registerForm.style.display=“block”){
this.BookDiv.style.display=“无”;
}
});
此.cancelBtn.addEventListener(“单击”,(e)=>{
this.registerForm.style.display=“无”;
if(this.registerForm.style.display=“无”){
this.BookDiv.style.display=“block”;
}
});
此.addBtn.addEventListener(“单击”,contacts.addToBook);
}
}
让表单=新表单();
类本地存储{
建造商(姓名、电话、电子邮件){
this.name=名称;
this.phone=电话;
this.email=电子邮件;
}
}
添加新联系人
将数据导入到书本
名称
电话
电子邮件
立即添加取消
当您传递对函数的引用时,如下所示:
this.addBtn.addEventListener("click", contacts.addToBook);
您解除了与此的绑定。调用this.contacts.push(obj)时所依赖的对象代码>在addToBook()中
您可以硬绑定希望此
的引用:
this.addBtn.addEventListener("click", contacts.addToBook.bind(contacts);
您还可以传入一个函数,该函数使用正确的上下文显式调用addToBook
:
this.addBtn.addEventListener("click", () => contacts.addToBook());
当您传递对函数的引用时,如下所示:
this.addBtn.addEventListener("click", contacts.addToBook);
您解除了与此
的绑定。调用this.contacts.push(obj)时所依赖的对象代码>在addToBook()中
您可以硬绑定希望此
的引用:
this.addBtn.addEventListener("click", contacts.addToBook.bind(contacts);
您还可以传入一个函数,该函数使用正确的上下文显式调用addToBook
:
this.addBtn.addEventListener("click", () => contacts.addToBook());