函数,对象,类的演进

1.一般函数

还在coding  c#的时候,用JS页面层做输入校正,第一次接触 function 这个东西,

function chkName(name){
   //验证代码  
}
function chkEmail(email){
    //验证代码  
}

 

 2. 函数有另一种写法 --- 匿名函数 or 函数变量化

1 var chkName  =  function(name){
2    //验证代码 
3 }
4 var  chkEmail  = function(email){
5     //验证代码 
6 }

 

来了一点新鲜和好奇,随即学习了下why?因为js预解析时候对变量和函数采取的策略是不同的,所以这2种写法效果还是有点同的具体在上一篇有简单说明

但是这2种方法在团队开发会遇到一个很大的问题,方法被覆盖而不容易察觉到。

 

那么久引用一个简单直观的方法 --- 3.对象收编变量

1  var ckh = {
2         chkName: function(name) {
3             //验证代码 
4         },
5         chkEmail: function(email) {
6             //验证代码 
7         }
8     }

先不说这样写的好处,以为还有一种

4.对象的另一种形式

1     var ckh = {}
2     ckh.chkName= function(name) {
3         //验证代码 
4     }
5 
6     ckh.chkEmail= function(email) {
7         //验证代码 
8     }

这2种写法结果是一样的,区别是前一种写法方法更集中,更直观,方便查阅,后一种方便拓展,在实际开发中可以结合起来使用。

除了刚那区别大概都是相同的了,相同的调用方法:chk.chkName(name) , 具体方法可以拓展,也可以被覆盖。

优点 :一定数量上减少了变量,降低了被覆盖的概率,只是降低而已。有了面向对象的影子。

缺点:新创建的对象不能被继承;方法还是会被覆盖,方法只是集中了并没有封装

 

 

进一步封装  --- 5.对象的初步类化

 1     var ckh =function() {
 2         return {
 3             chkName:function(name) {
 4                 //验证代码 
 5             },
 6            chkEmail:function(email) {
 7                 //验证代码 
 8             }
 9         }
10     }

这样写可以对上面2中写法加以封装,使得chk对象只能在 retrun 代码块拓展公共方法。使得自己的方法更好共同管理。

每次调用的时候,其实都是使用一个ruturn 新对象体,

 

最后的封装   --

1    var ckh = function() {
2         this.chkName = function(name) {
3             console.log("chkName") //验证代码 
4         };
5         this.chkEmail = function(email) {
6             console.log("chkEmail") //验证代码 
7         }
8     }

在原型链上扩展方法能直接别继承

posted @ 2015-12-26 13:48  benny.liu  阅读(205)  评论(0编辑  收藏  举报