我不知道如何阅读这段代码:
var byName = {};
ancestry.forEach(function(person){ byName[person.name] = person;]);
console.log(byName["Phil"]);
我感到困惑的是代码中的“byName [person.name] = person”部分。
1)byName [person.name]是什么意思?为什么使用方括号表示法而不是点符号?
2)为什么它等同于人(byName [person.name] = person),它是如何工作的?
ps:ancestry是一个JSON文件,作为我电子书沙箱中可用的字符串。
答案 0 :(得分:2)
Dot notation使用标识符。 foo
获取x["foo"]
属性。
方括号表示法采用字符串。 foo
获取var person = {};
person.name = "foo";
x[person.name]
属性。
字符串可以来自任何表达式。
foo
...获取byName[person.name] = person;
属性
byName
只是分解为“创建一个以public function orders(){
return $this->belongsToMany('App\Order', 'order_user', 'order_id', 'user_id');
}
对象上的当前人命名的新属性,并将其值设为当前人物对象”
答案 1 :(得分:2)
此代码循环遍历ancestry
并添加到对象byName
。 byName[person.name] = person
正在向byName
对象添加新元素。关键是person.name
,设置值为person
。换句话说,此代码允许从其名称快速查找person
对象的方法。最后一行代码演示了这一点。