首页 > 开发 > JS > 正文

js中寄生构造函数模式和工厂模式的区别

2017-09-05 12:50:29  来源:网友分享
function SpecialArray(){    var values = new Array();    values.push.apply(values, arguments);    values.toPipedString = function(){        return this.join("|");    }    return values;}var a = new SpecialArray(2,6,8,9,4);a.toPipedString();var b = SpecialArray(2,6,8,9,4);b.toPipedString();

使用或不使用new好像并没有什么区别。

另外寄生构造函数可以做的工作,工厂模式也能实现;那这种寄生构造函数存在有什么意义?

解决方案

这里使用寄生构造函数的目的是希望扩展Array的一个方法toPipeMessage,作者本意是期望能像使用普通Array一样使用SpecialArray,故虽然把specialarray当成函数也一样能用,但是这并不是作者的本意,也变得不优雅。