// 此内容是张容铭写的javascript设计模式的第一章,简单介绍了面向对象编程
// 感觉就像是自己的js在摸索过程中的进化史,从面向过程到面向对象,一步步在改良
// 看完这几个简单的示例,意味深长,都是骚操作
// 为了方便,将匿名function 赋值给fn,没有实际含义
var fn = function(){}
// 刚开始做开发为了满足功能而写的方法
function checkNmae(){
// code
}
function checkEmail() {
// code
}
function checkPassword() {
// code
}
// 改良版,将方法用变量表示
var checkNmae = fn;
var checkEmail = fn;
var checkPassword = fn;
// 使用对象收编变量
var checkObj = {
checkEmail:fn,
checkNmae:fn,
checkPassword:fn
}
// 对象的另一种形式
var checkObj = fn;
checkObj.checkNmae = fn;
checkObj.checkEmail = fn;
checkObj.checkPassword = fn;
//以上两种形式,只能单一的解决了问题,但是不能够重复使用
var checkObj = function(){
return{
checkNmae:fn,
checkEmail:fn,
checkPassword:fn
}
}
// 使用的方式
var a = checkObj();
a.checkPassword();
// 此处可以创建一个累,这样的话就可以根据这个类,new无限个对象
var checkObj = function(){
this.checkEmail=fn;
this.checkNmae = fn;
this.checkPassword = fn;
}
var a = new checkObj();
a.checkEmail();
// 以上在使用过程中比较耗费资源,可以使用prototype来实先
var checkObj = fn;
checkObj.prototype.checkEmail = fn;
checkObj.prototype.checkNmae = fn;
checkObj.prototype.checkPassword = fn;
var a = new checkObj();
a.checkEmail();
// 另一种prototype方式,不能与上面的混合使用,会出现覆盖问题
var checkObj = fn;
checkObj.prototype = {
checkEmail:fn,
checkNmae:fn,
checkPassword:fn
}
var a = new checkObj();
a.checkEmail();
// 实现以上以后,想实现程序的连续调用
var checkObj = {
checkNmae:function(){
return this;
},
checkEmail:function(){
return this;
},
checkPassword:function(){
return this;
}
}
checkObj.checkEmail().checkNmae().checkPassword();
// 在原型中可以使用这个方式,return this 即可
// 也可以直接操作Function函数,但是如果这么做了会直接污染Function函数,不建议这样
Function.prototype.checkEmail = fn;
var f = fn;
f.checkEmail();
// 可以在原型上抽象出一个统一的添加方法
Function.prototype.addMethod = function(name,func){
this[name] = func;
}
var a = function(){}
a.addMethod('checkName',fn);
a.addMethod('checkPassword',fn);
// 如果想实现链式调用
Function.prototype.addMethod = function(name,func){
this[name] = func;
return this;
}
var a = function(){}
a.addMethod('checkName',function(){
return this;
});
a.addMethod('checkPassword',function(){
return this;
});
// 对于习惯使用类的同学来说,还可以这样操作
Function.prototype.addMethod = function(name,func){
this.prototype[name] = func;
return this;
}
var a = function(){}
a.addMethod('checkName',fn);
a.addMethod('checkPassword',fn);
var b = new a();
b.checkEmail().checkPassword();
// 此内容是张容铭写的javascript设计模式的第一章,简单介绍了面向对象编程
// 感觉就像是自己的js在摸索过程中的进化史,从面向过程到面向对象,一步步在改良
// 看完这几个简单的示例,意味深长,都是骚操作
// 为了方便,将匿名function 赋值给fn,没有实际含义
var fn = function(){}
// 刚开始做开发为了满足功能而写的方法
function checkNmae(){
// code
}
function checkEmail() {
// code
}
function checkPassword() {
// code
}
// 改良版,将方法用变量表示
var checkNmae = fn;
var checkEmail = fn;
var checkPassword = fn;
// 使用对象收编变量
var checkObj = {
checkEmail:fn,
checkNmae:fn,
checkPassword:fn
}
// 对象的另一种形式
var checkObj = fn;
checkObj.checkNmae = fn;
checkObj.checkEmail = fn;
checkObj.checkPassword = fn;
//以上两种形式,只能单一的解决了问题,但是不能够重复使用
var checkObj = function(){
return{
checkNmae:fn,
checkEmail:fn,
checkPassword:fn
}
}
// 使用的方式
var a = checkObj();
a.checkPassword();
// 此处可以创建一个累,这样的话就可以根据这个类,new无限个对象
var checkObj = function(){
this.checkEmail=fn;
this.checkNmae = fn;
this.checkPassword = fn;
}
var a = new checkObj();
a.checkEmail();
// 以上在使用过程中比较耗费资源,可以使用prototype来实先
var checkObj = fn;
checkObj.prototype.checkEmail = fn;
checkObj.prototype.checkNmae = fn;
checkObj.prototype.checkPassword = fn;
var a = new checkObj();
a.checkEmail();
// 另一种prototype方式,不能与上面的混合使用,会出现覆盖问题
var checkObj = fn;
checkObj.prototype = {
checkEmail:fn,
checkNmae:fn,
checkPassword:fn
}
var a = new checkObj();
a.checkEmail();
// 实现以上以后,想实现程序的连续调用
var checkObj = {
checkNmae:function(){
return this;
},
checkEmail:function(){
return this;
},
checkPassword:function(){
return this;
}
}
checkObj.checkEmail().checkNmae().checkPassword();
// 在原型中可以使用这个方式,return this 即可
// 也可以直接操作Function函数,但是如果这么做了会直接污染Function函数,不建议这样
Function.prototype.checkEmail = fn;
var f = fn;
f.checkEmail();
// 可以在原型上抽象出一个统一的添加方法
Function.prototype.addMethod = function(name,func){
this[name] = func;
}
var a = function(){}
a.addMethod('checkName',fn);
a.addMethod('checkPassword',fn);
// 如果想实现链式调用
Function.prototype.addMethod = function(name,func){
this[name] = func;
return this;
}
var a = function(){}
a.addMethod('checkName',function(){
return this;
});
a.addMethod('checkPassword',function(){
return this;
});
// 对于习惯使用类的同学来说,还可以这样操作
Function.prototype.addMethod = function(name,func){
this.prototype[name] = func;
return this;
}
var a = function(){}
a.addMethod('checkName',fn);
a.addMethod('checkPassword',fn);
var b = new a();
b.checkEmail().checkPassword();