猿问

用寄生构造函数来扩展功能的问题

在博客看到这样一个例子:


function specialArray(){

    var values = new Array();

    values.push.apply(values,arguments);

    values.toPipedString = function(){

        return this.join('|');

    }

    return values;

};


var color = new specialArray('blue','red','yellow')

alert(color.toPipedString())

对这句values.push.apply(values,arguments)不太明白,首先是push不是应该是一个方法吗?这样的写法很奇怪;其次apply不是用来冒充对象的吗?虽然我知道这句话的作用是把传进去的参数添加到values这个数组末尾,但是具体是怎么实现的请大神指点一下,谢谢!


慕田峪7331174
浏览 473回答 2
2回答

鸿蒙传说

首先你对apply的理解是有误的,多看下文档。values.push.apply(values,arguments);相当于for(let i = 0 ; i < arguments.length ; i++){&nbsp; &nbsp; values.push(arguments[i])}更加简洁
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答