本节书摘来自异步社区《JavaScript设计模式》一书中的第1章,第1.7节,作者:张容铭著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.7 一个检测类
“当然,你看,我们是把所有的方法放在函数内部了,通过this定义的,所以每一次通过new关键字创建新对象的时候,新创建的对象都会对类的this上的属性进行复制。所以这些新创建的对象都会有自己的一套方法,然而有时候这么做造成的消耗是很奢侈的,我们需要处理一下。”
var CheckObject = function(){};
CheckObject.prototype.checkName = function(){
// 验证姓名
}
CheckObject.prototype.checkEmail = function(){
// 验证邮箱
}
CheckObject.prototype.checkPassword = function(){
// 验证密码
}
“这样创建对象实例的时候,创建出来的对象所拥有的方法就都是一个了,因为它们都要依赖prototype原型依次寻找,而找到的方法都是同一个,它们都绑定在CheckObject对象类的原型上,”小铭继续说,“这种方式我们要将prototype写很多遍,所以你也可以这样做。”
var CheckObject = function(){};
CheckObject.prototype = {
checkName : function(){
// 验证姓名
},
checkEmail : function(){
// 验证邮箱
},
checkPassword : function(){
// 验证密码
}
}
“但有一点你要记住,这两种方式不能混着用,否则一旦混用,如在后面为对象的原型对象赋值新对象时,那么它将会覆盖掉之前对prototype对象赋值的方法。”小铭补充说。
“知道了,不过我们要使用这种方式定义的类是不是要像下面这样呢?”小白问道。
var a = new CheckObject();
a.checkName();
a.checkEmail();
a.checkPassword();