存储对地址簿应用程序实例化对象的引用
Storing references to instantiated objects for an address book app
我正在尝试学习如何编程,但我被 Codecademy 等人困住了。阿尔。不解释。他们总是教您如何将名称硬编码到实例化对象,以便您以后可以引用它们。我需要知道如何处理动态联系人列表。
我想知道如何智能地存储对我正在创建的对象的引用,以便我可以知道将来实例化对象的位置。
例如,如果下面的这个应用程序代表某个地址簿应用程序的开始,我将如何将用户在 DOM 中的输入连接到 Javascript 中的实际对象?我的意思不是解释如何使用事件侦听器,而是我可以使用哪些数据 link 浏览器中的某个联系人与我的数据数组中的联系人。
目前,我只是将所有内容都放入一个数组中,但我不确定应该使用什么作为标识符。当然有数组的索引,但是如果我不知道 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();
如果您要做的只是将 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 或数组形式存储,则可以做到这一点,并且在其他地方都有大量示例。如果您使用的是特定的,您应该可以访问 key/index 以执行您当时需要的任何 replacement/removal。
我正在尝试学习如何编程,但我被 Codecademy 等人困住了。阿尔。不解释。他们总是教您如何将名称硬编码到实例化对象,以便您以后可以引用它们。我需要知道如何处理动态联系人列表。
我想知道如何智能地存储对我正在创建的对象的引用,以便我可以知道将来实例化对象的位置。
例如,如果下面的这个应用程序代表某个地址簿应用程序的开始,我将如何将用户在 DOM 中的输入连接到 Javascript 中的实际对象?我的意思不是解释如何使用事件侦听器,而是我可以使用哪些数据 link 浏览器中的某个联系人与我的数据数组中的联系人。
目前,我只是将所有内容都放入一个数组中,但我不确定应该使用什么作为标识符。当然有数组的索引,但是如果我不知道 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();
如果您要做的只是将 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 或数组形式存储,则可以做到这一点,并且在其他地方都有大量示例。如果您使用的是特定的,您应该可以访问 key/index 以执行您当时需要的任何 replacement/removal。