4

codecademyのこの連絡先リストプロジェクトで2つの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");
4

2 に答える 2

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
  }
};
于 2013-03-14T20:28:39.533 に答える
0

objlist作成している関数のパラメータの名前です。特別な意味はありません。fooあなたはそれをまたはobject、またはあなたにとって意味のある他の何かと呼ぶことができます。リストの関数呼び出しに渡す引数の値(上記、つまりfriends)は、関数のスコープ内のパラメーターに格納されます。つまり、obj本質的friendsにはのコード内で動作している間になりますlist

prop似ています:JavaScriptのfor...in構文の一部として作成される単なる変数です。 for inコンストラクトの引数であるオブジェクトのプロパティ名をループし、inそれらを1つずつに格納しますprop。繰り返しますが、これは好きなように呼び出すことができます。

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

ただし、あなたが学んだと確信しているように、変数名に何らかの意味を与えることは理にかなっています。したがって、関数は一般的なオブジェクトに対して動作するobjため、「オブジェクト」の略であり、「プロパティ」の略です。listprop

プロパティ名for...inをループすることに注意してください。対応する値にアクセスするには、次を使用する必要があります。

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

関数は実際にこれを行いますが、推奨されるチェックsearchはありません。hasOwnProperty

于 2013-03-14T20:34:32.677 に答える