JS设计模式——函数定义
第一阶段:直接定义函数
//定义
funtion a(){
//do
}
funtion b(){
//do
}
funtion c(){
//do
}
//调用
a();
以上方法相当于定义了一堆全局变量,与下面的方式相同
//定义
var a=function(){
//do
}
var b=function(){
//do
}
var c=function(){
//do
}
//调用
a();
这种定义全局变量的方法,在团队开发时,可能会被他人覆盖。
为了减少覆盖的风险, 可以创建一个对象,将函数放到对象中
第二阶段:对象收编函数
//定义
var obj={
a:function(){//do},
b:function(){//do},
c:function(){//do}
}
//调用
obj.a();
或者
//定义
var obj=function(){};
obj.a=function(){//do};
obj.b=function(){//do};
obj.c=function(){//do};
//调用
obj.a();
此时可以使用对象进行函数的调用,但是重新定义的对象,无法进行函数的使用。
var obj2=new obj();
obj2.a();//报错。此时obj2并没有a方法
为了支持新定义的对象进行方法的调用,将函数放到对象内
第三阶段:对象包含函数
// 定义
var obj=function(){
return {
a:function(){//do},
b:function(){//do},
c:function(){//do}
}
}
//使用
var o1=obj();
o1.a();
var o2=obj();
o2.a();
以上方法虽然可以实现,但不是真正意义上的类的创建,创建出的o1,o2跟对象obj没有关系
为了表示创建出来的对象有关系,使用类创建
第四阶段:类对象
//定义
var obj=function(){
this.a=function(){//do};
this.b=function(){//do};
this.c=function(){//do};
}
//调用
var o1=new obj();
o1.a();
var o2=new obj();
o2.a();
这种方式创建对象的时候,新创建的对象都会对类的this的属性进行复制,新建的对象都有自己的方法,消耗太大。
为了减少消耗,使用prototype
第五阶段:原型对象
// 定义
var obj=function(){};
obj.prototype.a=function(){//do};
obj.prototype.b=function(){//do};
obj.prototype.c=function(){//do};
// 调用
var o1=new obj();
o1.a();
var o2=new obj();
o2.a();

浙公网安备 33010602011771号