为什么javascript类实例中的方法看不到属性
类的构造函数中的属性集对该类实例中的其他函数不可用 类构造函数将对象作为数据作为其参数。然后将其保存为实例的一个属性-全部正常为什么javascript类实例中的方法看不到属性,javascript,class,ecmascript-6,Javascript,Class,Ecmascript 6,类的构造函数中的属性集对该类实例中的其他函数不可用 类构造函数将对象作为数据作为其参数。然后将其保存为实例的一个属性-全部正常 const form = new Form({ "name": "John", "description": "a good bloke", "box_id": 1 }); 我可以看到form.orginalData是我运行时传递的对象 form.toString() 我在名为data的函数中得到一个空对象集 下面是完整的示例 班级形式{ 构造器数据{
const form = new Form({
"name": "John",
"description": "a good bloke",
"box_id": 1
});
我可以看到form.orginalData是我运行时传递的对象
form.toString()
我在名为data的函数中得到一个空对象集
下面是完整的示例
班级形式{
构造器数据{
this.orginalData=数据
对于此.orginalData中的let字段{
此[字段]=数据[字段];
}
}
资料{
设d={};
让p进入这个。原始数据{
d[p]=这个[p];
}
返回d;
}
托斯特林{
返回JSON.stringifythis.data;
}
}
常数形式=新形式{
姓名:约翰,
描述:一个好家伙,
信箱号码:1
};
让message=document.getElementById'message';
form.name='Ian';
form.description='是一个邪恶的人';
message.innerHTML=form.name+;
message.innerHTML+=form.description+;
message.innerHTML+=orginalData:+JSON.stringifyform.orginalData+
message.innerHTML+=但是如果我运行form.data,我会得到
message.innerHTML+=form.toString;
信息{
边框:1px纯蓝色;
填充:10px;
}
身体{
字体系列:无衬线;
}
类属性持久性
输出:
出了点问题
您得到的结果为空,因为originalData vs originalData此[p]应为this.originalData[p]。您还可以将循环替换为let d=Object.assign{},this.originalData;您输入了一个错误:this.originaldata应该是this.originalDataOh my word-大脸掌。轻度阅读障碍的危险。感谢所有看过这个的人。