一、代码片段:
1、Class定义如下
var Class = {
create: function() {
return function() {
this.initialize.apply(this, arguments); }
}
}
2、Class使用方式:
var SimpleDrag = Class.create();
SimpleDrag.prototype = {
initialize: function(drag) {
},
Start: function(oEvent) {
},
Move: function(oEvent) {
},
Stop: function() {
}
};
1、Class定义的另一种写法可以为:
var Class = {
create: function() {
return this.initialize.apply(this , arguments);
}
}
或者不适用apply方法
var Class = {
create: function() {
return this.initialize(arguments[0], arguments[1].....);
}
}
2、create方法的作用:
Class对象的create方法返回的是对象的构造函数,即create方法的作用就是进行对象实例的初始化。
3、initialize方法的作用:
这里的构造函数就是initialize函数,而实际上这里的initialize函数只是声明,并没有实际的定义。 这里的Create声明实际上是将initialize方法封装了一下,更加的明确功能。initialize函数的定义是在原型(prototype)中进行的。当使用Class对象的create方法定义新对象实例时,就会执行initialize方法,即执行已经声明好的构造函数。initialize只是你所声明的构造函数的名字,如果你有兴趣,你可以将任何名字定义为构造函数,当使用create方法创建新对象实例时,就会执行你所声明构造函数。
3、apply方法的作用:
call和apply看做是某个对象的方法,目的是通过间接方式进行调用函数。call和apply的第一个实参是要调用函数的母对象,call方法是将所有参数罗列出来,而apply是将所有参数放在一个数组中。所以使用apply方法比较利于传递参数。