JavaScript中的`arguments`对象

时间:2013-12-26 22:59:33

标签: javascript

Secrets of the JavaScript Ninja使用arguments函数解释merge()关键字:

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

2 个答案:

答案 0 :(得分:5)

root本身是第一个参数,因此我们不需要添加其中的任何成员。

答案 1 :(得分:1)

它已经在root。那是第一个参数