首页 新闻 会员 周边 捐助

关于this,请教

1
悬赏园豆:10 [已解决问题] 解决于 2012-09-10 18:02

在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调整呢?

请教
axle的主页 axle | 初学一级 | 园豆:185
提问于:2012-09-10 17:12
< >
分享
最佳答案
2
this.init(arguments);这样写,会把arguments这个数组当成一个参数传进去。
收获园豆:10
向往-SONG | 老鸟四级 |园豆:4853 | 2012-09-10 17:20

this.init.apply(this,arguments)的第二个参数也是把arguments做为参数传给this.init吧

axle | 园豆:185 (初学一级) | 2012-09-10 17:24

@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 | 园豆:4853 (老鸟四级) | 2012-09-10 17:29

@向往-SONG: 确实是这样,非常感谢。

axle | 园豆:185 (初学一级) | 2012-09-10 18:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册