我觉得代码冗余了.target一来就可以志向this 而且这个for循环for (; i < length; i++) 也有点多余了,上面if中i--了,那下面的for循环也只可能执行一次吧.如果没执行if中的语句,那for循环中就从arguments[1]开始了,那arguments[0]没有得到扩展啊?求解释~
var a = {a:1},b = {a:2,b:1};
$.extend(a,b);
console.log(a);//{a:2,b:1}
console.log(b);//{a:2,b:1}
console.log($.a);//undefined
$.extend(a);
console.log($.a);//2
并不是所有的arguments都是往$上面挂载的,extend(boolean,object target,obj)才是完整的写法。
我来回答一下吧,是我个人的理解,不知正确与否,希望 @Aaron 可以纠正,
关于“如果没执行if中的语句,那for循环中就从arguments[1]开始了,那arguments[0]没有得到扩展啊?”这个问题,样例代码中,如果执行extend时,传入的参数个数大于1,也就是第一个if判断失败的时候,我们应该可以得知使用者是针对某个具体的target(也就是arguments[0]对象)的扩展处理,随后的for循环直接跳过arguments[0]是合理的。老师的想法很巧妙...