1.函数的形式
function checkName(){
//定义一个函数
}
var checkName=function(){
//函数的另一种形式
}
2.用对象收编变量
var CheckObject={
checkName:function(){
//验证姓名
},
checkEmail:function(){
//验证邮箱
},
checkPassword:function(){
//验证密码
}
}
//调用时使用点语法
CheckObject.checkName();
//对象的另一种形式
var CheckObject=function(){};
CheckObject.checkName=function(){
//验证姓名
}
CheckObject.checkEmail=function(){
//验证邮箱
}
CheckObject.checkPassword=function(){
//验证密码
}
//把所有方法放在一个函数对象中
var CheckObject=function(){
return{
checkName:function(){
//验证姓名
},
checkEmail:function(){
//验证邮箱
}
}
}
//每次调用这个函数时,都返回一个新对象
var a=CheckObject();
a.checkEmail();
3.因为创建的对象a和对象CheckObject没有任何关系,所以用类对其进行改造
var CheckObject=function(){
this.checkName=function(){
//验证姓名
}
this.checkEmail=function(){
//验证邮箱
}
}
//使用new创建
var a=new CheckObject();
a.checkEmail();
特点:所有的方法放在函数内部了,通过this定义,每次通过new关键字创建新对象的时候,新创建的对象都会对类的this上的属性进行复制,因此新创建的对象都有自己的一套方法。
4.方法添加到原型上
var CheckObject=function(){};
CheckObject.prototype.checkName=function(){
//验证姓名
}
CheckObject.prototype.checkEmail=function(){
//验证邮箱
}
这次在创建对象实例的时候,创建的对象拥有的方法就是一个了。因为它们都依赖prototype原型一次寻找,而找到的方法都是同一个。
//一种简写方式
var CheckObject=function(){};
CheckObject.prototype={
checkName:function(){
},
checkEmail:function(){
}
}
//使用方式
var a=new CheckObject();
a.checkName();
a.checkEmail();
5.这样,调用几次方法,就要对a写几遍。可以在每个声明的末尾处将当前对象返回,this指向的就是当前对象,可以将其返回。
var CheckObject=function(){};
CheckObject.prototype={
checkName:function(){
//验证姓名
return this;
},
checkEmail:function(){
//验证邮箱
return this;
}
}
6.prototype.js是一款JavaScript框架,里面封装了很多方法,最大的特点是对源生的对象(Function,Array,Object等等)拓展,为每个函数添加一个检测邮箱的方法可以这么做
Function.prototype.checkEmail=function(){
//验证邮箱
}
//使用函数的调用方式
var f=function(){};
f.checkEmail();
//使用类的形式
var f=new Function();
f.checkEmail();
这样会污染源生对象Function,别人的函数也会被你创建的函数所污染,造成不必要的开销,可以抽象出一个统一添加方法的功能
Function.prototype.addMethod=function(name,fn){
this[name]=fn;
}
//添加邮箱验证的方法
var methods=function(){};
或者
var methods=new Function();
//添加方法
methods.addMethod('checkEmail',function(){});
methods.checkEmail();
如果想链式添加,则通过this返回
Function.prototype.addMethod=function(name,fn){
this[name]=fn;
return this;
}
var methods=function(){};
methods.addMethod('checkName',function(){
//验证姓名
return this;
}).addMethod('checkEmail',function(){
//验证邮箱
return this;
})
methods.checkName().checkEmail();
7.习惯类调用方式
Function.prototype.addMethod=function(name,fn){
this.prototype[name]=fn;
}
//添加方法
var Methods=function(){};
Methods.addMethod('checkName',function(){
//验证姓名
}).addMethod('checkEmail',function(){
//验证邮箱
});
使用的时候,必须使用new关键字创建新的对象
var m=new Methods();
m.checkEmail()