JavaScript忍者的秘密用merge()函数解释arguments关键字:
function merge(root){
for (var i = 1; i < arguments.length; i++) { // starts at i = 1, not 0
for (var key in arguments[i]) {
root[key] = arguments[i][key];
}
}
return root;
}
var merged = merge(
{name: "Batou"},
{city: "Niihama"});请注意以下断言:
assert(merged.name == "Batou",
"The original name is intact.");
assert(merged.city == "Niihama",
"And the city has been copied over.");为什么merged.name等于Batou而不是undefined
正如我所理解的,merge()没有查看外部for-循环中的第一个参数,所以name: Batou是如何被添加到root中的?
发布于 2013-12-26 23:01:58
root本身是第一个参数,因此我们不需要在其中添加任何成员。
发布于 2013-12-26 23:02:07
它已经在root里了。这是第一个参数
https://stackoverflow.com/questions/20792369
复制相似问题