Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';向数组中添加联系人的工作方法?_Javascript_Oop_Ecmascript 6_Local Storage - Fatal编程技术网

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());