大家都知道prototype创建类的源码为
var Class = {
create: function() {
return function() { this.initialize.apply(this, arguments);}
}
}
为什么是用
this.initialize.apply(this, arguments); 而不是this.initialize(arguments);
function test()
{
return function() { this.init( arguments ); }
}
var a= test();
a.prototype.init = function(x) { this.p1 = "p1"; alert( x); }
var v1 = new a('a');
alert(x) 显示的是什么呢,是object, 也就是说this.initialize是把arguments对象传递过来,而采用this.initialize.apply(this, arguments); 才会把arguments对象里面的数据传递到init方法中。