需要说明:联系人列表中包含对象的组织(Javascript,Codecademy)

时间:2013-03-14 20:24:54

标签: javascript

我在contact list project codecademy上的{{3}}中理解两个javascript函数时遇到了一些麻烦。

具体来说,我对“obj”或“prop”等条件感到困惑。 如果有人能够详细解释这些功能是如何工作的,我将非常感激。

这是代码&谢谢你:

var friends = {};
friends.bill = {
  firstName: "Bill",
  lastName: "Gates",
  number: "(206) 555-5555",
  address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
  firstName: "Steve",
  lastName: "Jobs",
  number: "(408) 555-5555",
  address: ['1 Infinite Loop','Cupertino','CA','95014']
};

var list = function(obj) {
  for(var prop in obj) {
    console.log(prop);
  }
};

var search = function(name) {
  for(var prop in friends) {
    if(friends[prop].firstName === name) {
      console.log(friends[prop]);
      return friends[prop];
    }
  }
};

list(friends);
search("Steve");

2 个答案:

答案 0 :(得分:0)

obj是list函数中传递的参数。用于迭代该obj的名称。例如:

var a = {x:5}

for(var prop in a){
    //here prop will be 'x' and a[prop] will be 5 (a['x'] is 5)
    //same goes again for objects that have multiple properties
}

在你的情况下:

var list = function(obj) {
  for(var prop in obj) {
    console.log(prop); // here will be logged Bill and Steve, because they are properties of friends -object
  }
};

答案 1 :(得分:0)

obj只是您正在创建的list函数的参数名称。它没有特别的意义。您可以将其称为fooobject,或其他任何对您有意义的内容。传递给list的函数调用的参数的值(上面,即friends)存储在函数范围内的参数中。也就是说,objfriends代码内操作时基本上变为list

prop类似:它只是作为JavaScript for...in语法的一部分创建的变量。 for in遍历作为in构造的参数的对象的属性名称,并将它们逐个存储在prop中。再一次,你可以随意调用它:

var list = function (foo) {
    for (var bar in foo) {

但是,我确信你已经学会了,给变量名称赋予一些意义是有意义的,所以obj是“object”的缩写,因为list函数对任何一般对象都有效,prop是“财产”的缩写。

请注意for...in遍历属性名称。要访问correspoding值,您应该使用:

if (obj.hasOwnProperty(prop)) {
    //access via obj[prop];
}

search函数实际上是这样做的,但没有推荐的hasOwnProperty检查。