问答详情
源自:2-5 插件接口的设计

代码冗余了吧

我觉得代码冗余了.target一来就可以志向this 而且这个for循环for (; i < length; i++) 也有点多余了,上面if中i--了,那下面的for循环也只可能执行一次吧.如果没执行if中的语句,那for循环中就从arguments[1]开始了,那arguments[0]没有得到扩展啊?求解释~

提问者:吴聊 2015-04-08 11:28

个回答

  • qq_彦狐_0
    2016-09-22 16:20:26

    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)才是完整的写法。


  • wghusw
    2015-12-27 15:44:03

    我来回答一下吧,是我个人的理解,不知正确与否,希望 @Aaron 可以纠正,

    关于“如果没执行if中的语句,那for循环中就从arguments[1]开始了,那arguments[0]没有得到扩展啊?”这个问题,样例代码中,如果执行extend时,传入的参数个数大于1,也就是第一个if判断失败的时候,我们应该可以得知使用者是针对某个具体的target(也就是arguments[0]对象)的扩展处理,随后的for循环直接跳过arguments[0]是合理的。老师的想法很巧妙...