首页 > 代码库 > 设计模式学习笔记
设计模式学习笔记
一、JS灵活性
1、在团队开发中,为了减少方法覆盖或者被覆盖,我们可以用一个变量来保存这些方法和属性;
示例:
var checkObject = {
checkName = function(){},
checkEmail = function(){}
}
2、类的形式创建对象
1)用类的形式创建对象时,对象名首字母要大写,用来和其他对象区分;
var CheckObject = function(){
this.checkName = function(){},
this.checkEmail = function(){}
}
2)用类的形式来创建对象,那么我们创建一个新对象,就要用new 关键字来创建了
var a = new CheckObject();
a.checkName();
3、检测类
上面的例子中,我们把所有的方法都通过 this 定义,这样通过new 创建对象时,都会对类的this上的属性进行复制, 这样每一个新的方法都会有自己的一套方法, 这样会造成 很多消耗;
因此我们用原型的方法来构造一个类,这样新对象都是用同一个方法了;
var CheckObject = function(){};
CheckObject.prototype = {
checkName :function(){},
checkEmail : function(){}
}
调用:
var a = new CheckObject();
a.checkNmae();
a.checkEmail();
4、方法的妙用 --- 链式调用
上面的例子中,调用了2个方法,a就书写了2次;这个可以避免的;
只要在声明的每一个方法末尾将当前对象返回即可,this 就是指向当前对象;
示例:
var CheckObject = function(){};
CheckObject.prototype = {
checkName :function(){
//验证姓名
return this;
},
checkEmail : function(){
//验证邮箱
return this;
}
}
var a = new CheckObject();
a.checkNmae().checkEmail();
5、函数祖先
函数功能拓展:可以给原生函数添加一个拓展方法的功能;
Function.prototype.addMethod = function(name,fn){
this[name] = fn;
}
链式调用:
Function.prototype.addMethod = function(name,fn){
this.prototype[name] = fn;
return this;
}
新对象
Var Methods = function(){};
Methods.addMethod(‘checkName’,function(){
//验证姓名
}).addMethod(‘checkEmail’,function(){
//验证邮箱
});
使用新对象:
Var m = new Methods();
m.checkName().checkEmail();
设计模式学习笔记