变量、对象、函数、类

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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值