我正在努力学习如何编程,而且我遇到了Codecademy et。人。不要澄清。它们总是教你如何将名称硬编码为实例化对象,以便以后可以引用它们。我需要知道如何处理动态联系人列表。
我想知道如何智能地存储对我正在创建的对象的引用,以便我可以知道将来实例化对象的位置。
例如,如果下面的这个应用程序代表一些地址簿应用程序的开头,我如何将用户在DOM中的输入连接到Javascript中的实际对象?我不是要解释如何使用事件监听器,而是用什么数据来将浏览器中的某个联系人链接到我的数据数组中的某个联系人。
目前,我只是将所有内容都推送到数组中,但我不确定我应该将其用作标识符。当然有数组的索引,但是如果我提前知道json数据列表中的联系人,我怎么知道[0]是Ethan而不是其他一些可能已被添加到json列表在哪一点?
我是否应该在这里使用数组,或者是否有某些方法可以使用对象的名称,只是有一堆浮动的对象,我可以稍后在数组之外调用它?
var TestApp = {};
// my data... taken from wherever
TestApp.jsonContacts = {
contact1: {
name: "Ethan",
age: 24
},
contact2: {
name: "Evan",
age: 30
},
contact3: {
name: "Paul",
age: 9000
}
};
// I know this is silly, just let me pretend it's strung from a server somewhere...
TestApp.jsonStrung = JSON.stringify(TestApp.jsonContacts);
TestApp.globalContactList = [];
// my constructor function to create instances of Contact
TestApp.Contact = function(name, age){
this.name = name;
this.age = age;
};
// where I'm taking data and creating new Contact objects
TestApp.instantiateObjects = function(){
// I know this is silly, just let me pretend I'm parsing it necessarily...
var jsonUnstrung = JSON.parse(TestApp.jsonStrung);
// I think I'm looping through the first set of objects sitting in jsonContacts
for (var i in jsonUnstrung) {
var obj = new TestApp.Contact(jsonUnstrung[i].name, jsonUnstrung[i].age);
TestApp.globalContactList.push(obj);
}
};
TestApp.instantiateObjects();
答案 0 :(得分:1)
如果你要做的就是将你的JSON转换成可用的模型,你可以循环并转换它,例如。
TestApp.allContacts = {};
TestApp.instantiateObjects = function(){
var jsonUnstrung = JSON.parse(TestApp.jsonStrung);
for (var i in jsonUnstrung) {
var obj = new TestApp.Contact(jsonUnstrung[i].name, jsonUnstrung[i].age);
TestApp.allContacts[i] = obj;
}
};
并且您将拥有相同键的所有实例。但是,当您将这些对象作为一个组使用时,您不应该通过其密钥访问它们(除非您正在修改一个特定的对象),而应该迭代整个集合。如果它们以JSON或Array形式存储,则可以执行此操作,并且其他地方有很多示例。如果您正在使用特定的密钥/索引,则应该有权访问密钥/索引,以便在此时执行您需要的任何替换/删除。