在prototype库中,有段创建类的代码
var Class=function(){ var klass=function(){ this.init.apply(this,arguments); } klass.prototype.init=function(){ //code } return klass; }
其中
this.init.apply(this,arguments);
这行代码是可以让实例对象直接初始化,另外可以调整上下文(this)
可以为啥不这样写
this.init(arguments);
因为原代码中apply的参数this和this.init中的this应该是一样的阿,何必再去用apply调整呢?
请教
this.init(arguments);这样写,会把arguments这个数组当成一个参数传进去。
this.init.apply(this,arguments)的第二个参数也是把arguments做为参数传给this.init吧
@axle:
嗯,this.init.apply(this,arguments),会把arguments数组里每一个值作为一个单独的参数传进去。
init(a,b,c)
init(arguments)=====>init(arguments,b,c)
init.apply(this,arguments)=====>init(arguments[0],arguments[1],[2])
@向往-SONG: 确实是这样,非常感谢。