为什么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-大脸掌。轻度阅读障碍的危险。感谢所有看过这个的人。