functionSpecialArray(){varvalues=newArray();values.push.apply(values,arguments);values.toPipedString=function(){returnthis.join("|");};returnvalues;}varcolors=newSpecialArray("red","blue","green");alert(colors.toPipedString());//"red|blue|green"关于javascript中的寄生构造函数模式,我觉得他和工厂模式其实就是一样的,只不过在写法上用了new这种构造函数的写法,用意是要在不扩展原生构造函数的情况下自定义一个扩展型的构造函数。既然是扩展原生的构造函数,那么用起来当然要像个构造函数,于是就用了new这种构造函数的写法。显式的return重写了调用构造函数时返回的值,所以new不new其实最后的结果没有影响,那么写只是为了用起来像构造函数。之所以要有这个模式是因为构造函数模式只能new出一个Object类型,不能够new出一个比如Array,类似这样是行不通的:functionSpecialArray(){this=newArray();this.push.apply(this,arguments);this.toPipedString=function(){returnthis.join("|");};}varcolors=newSpecialArray("red","blue","green");alert(colors.toPipedString());//报错:Invalidleft-handsideinassignment大家看看我理解的对吗?
qq_花开花谢_0
慕妹3242003
慕码人2483693
随时随地看视频慕课网APP
相关分类