您的位置:首页 > 其它

函数,对象,类的演进

2015-12-26 13:48 197 查看
1.一般函数

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

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


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

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


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

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

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

var ckh = {
chkName: function(name) {
//验证代码
},
chkEmail: function(email) {
//验证代码
}
}


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

4.对象的另一种形式

var ckh = {}
ckh.chkName= function(name) {
//验证代码
}

ckh.chkEmail= function(email) {
//验证代码
}


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

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

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

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

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

var ckh =function() {
return {
chkName:function(name) {
//验证代码
},
chkEmail:function(email) {
//验证代码
}
}
}


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

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

最后的封装 --

var ckh = function() {
this.chkName = function(name) {
console.log("chkName") //验证代码
};
this.chkEmail = function(email) {
console.log("chkEmail") //验证代码
}
}


在原型链上扩展方法能直接别继承
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: