1.试着定义一个即可为函数原型添加方法又可为其自身添加方法的addMethod方法。
Function.prototype.addMethod=function(name,fn){
this[name]=fn;
return this;
};
var method=function(){};
method.addMethod('checkname',function(){
//验证名称
console.log('名称');
return this;
}).addMethod('checktel',function(){
//验证电话号码
console.log('电话');
return this;
});
method.checkhand=function(){
//检查手
console.log('检查手手');
return this;
};
//调用
method.checkname().checktel().checkhand();
//执行结果
图片.png
类式调用:
Function.prototype.addMethod=function(name,fn){
this.prototype[name]=fn;
return this;
};
var Method=function(){};
Method.addMethod('checkname',function(){
//验证名称
console.log('名称');
return this;
}).addMethod('checktel',function(){
//验证电话号码
console.log('电话');
return this;
});
Method.prototype.checkhand=function(){
//检查手
console.log('检查手手');
return this;
};
//调用
var m=new Method();
m.checkname().checktel().checkhand();
//执行结果
图片.png
使用类式调用时犯了一个错误
Function.prototype.addMethod=function(name,fn){
this.prototype[name]=fn;
return this;
};
var Method=function(){};
Method.addMethod('checkname',function(){
//验证名称
console.log('名称');
return this;
}).addMethod('checktel',function(){
//验证电话号码
console.log('电话');
return this;
});
Method.prototype.checkhand=function(){
//检查手
console.log('检查手手');
return this;
};
Method.checkhand2=function(){
//检查手
console.log('检查手手2');
return this;
};
//调用
var m=new Method();
m.checkname().checktel().checkhand();
Method.checkhand2();
m.checkhand2();//报错,因为checkhand2不是原型的函数,所以没有被m继承
图片.png
网友评论