首页 > 代码库 > 设计模式学习笔记

设计模式学习笔记

 

一、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();

设计模式学习笔记