prototye 类创建know how

大家都知道prototype创建类的源码为


var Class = {

create: function() {

return function() { this.initialize.apply(this, arguments);}

}

}

为什么是用

this.initialize.apply(this, arguments); 而不是this.initialize(arguments);


通过一个js实验可以为啥要这样做
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方法中。

posted @ 2009-10-02 08:22  悠悠木匠  阅读(160)  评论(0)    收藏  举报