从一个验证函数开始
要求:用js创建一个函数,用于验证名字、邮箱、密码等
一、简单创建
var checkName = funtion(){
//验证名字
}
var checkEmail = funtion(){
//验证邮箱
}
var checkPwd = funtion(){
//验证密码
}
创建函数的时候,分别用变量保存,但是创建的全部都是全局变量,很容易因为别人创建的相同的方法名而冲突,团队成员相互影响。
二、用一个对象保存
将上面的方法进行优化,将所有的方法放在一个对象里面保存
var CheckObject1 = function () {
return {
// 每次返回都会返回一个新的对象,让对象之间相互不影响
checkName: function () {
console.log("验证名字成功");
},
checkEmail() {
console.log("验证邮箱成功");
},
checkPassword() {
console.log("验证密码成功");
},
};
};
var a = CheckObject1();
a.checkEmail();
用以上创建方法,别人每次创建对象的时候都会return一个新的对象,防止别人每次使用的时候产生冲突。
三、类也可以
以上方法,可以用类的方法进行替代,也会产生相同效果。
var CheckObject = function () {};
CheckObject.prototype.checkName = function () {
console.log("验证名字成功");
return this; // 添加此行代码之后,可以通过链式调用
};
CheckObject.prototype.checkEmail = function () {
console.log("验证邮箱成功");
return this; // 添加此行代码之后,可以通过链式调用
};
CheckObject.prototype.checkPwd = function () {
console.log("验证密码成功");
return this; // 添加此行代码之后,可以通过链式调用
};
// 1.普通调用
var a = new CheckObject();
a.checkName();
// 2.链式调用:上面每一个方法都return this
// a.checkEmail().checkPwd().checkName();
书写每一个方法处可以return this,返回的是调用当前方法的对象,故可以用链式方法进行调用。使用 类.prototype.方法 可以实现方法二中的效果。
上面代码与以下的代码等价:
var CheckObject = function () {};
CheckObject.prototype = {
checkEmail: function () {
console.log("CheckObject1验证邮箱成功");
rethrn this;
},
checkPwd: function () {
console.log("CheckObject1验证密码成功");
rethrn this;
},
// checkName()方法省略
};
var b = new CheckObject();
b.checkEmail();
四、链式添加方法
// 1.addMethod用于添加新的方法
Function.prototype.addMethod = function (name, fn) {
this[name] = fn;
return this;
};
// 2.链式添加方法
var methods = function () {};
methods
.addMethod("checkName", function () {
console.log("验证姓名成功");
return this;
})
.addMethod("checkEmail", function () {
console.log("验证邮箱成功");
return this;
});
// 3.输出
console.log("====链式添加方法====");
methods.checkEmail().checkName();
以上方法还可以将methods更改成Methods,创建的时候先new一个Method对象,在调用该对象进行调用方法。具体方法可以查看《JavaScript设计模式》。(本书内容也参考自此书)