因为好长时间的懒惰和懈怠,好久没有更新文章了,从现在开始我会按时更新一些自己总结的一些知识,和研究的东西,希望能让大家从我这里学到一点点的知识。
本文参考了张荣铭的javascript设计模式一书,算是自己对看了文章的总结吧,如果你想学习设计模式,可以去购买一本,学习一下,写的非常好。
在我们的开发中,如果给了自己一些验证姓名、邮箱、密码的任务,按照下面的写法看
声明的方式,还有另外一种
上面的两种声明方式都会产生好多全局变量,会影响其他人的使用,命名,所以我们可以把这些放到一个对象下面
checkObject = checkName : checkEmail : checkPassword : }添加方式
1 checkObject = checkObject.checkName = checkObject.checkEmail = checkObject.checkPassword = (){}
虽然这样可以满足自己的需求,但是当别人想用你写的对象的方法时候就麻烦了,因为这个对象不能复制一份
要实现复制一份看下面的写法
checkObject = checkName : checkEmail : checkPassword : a = a.checkEmail();
上面的方法虽然可以实现我们的功能,但是创建出来的对象a和对象checkObject没有任何关系
我们对其进行改造一下
CheckObject = .checkName = .checkEmail = .checkPassword = a = console.log(a);方法,然后有时候这么做造成的性能消耗是非常奢侈的,我们需要处理一下,
CheckObject = CheckObject.prototype.checkName = CheckObject.prototype.checkEmail = CheckObject.prototype.checkPassword = };
这样创建对象实例的时候,找方法的时候如果自己本身没有的话就会上原型上面一层一层的去找,就可以拥有方法了
上面的方法要把peototype写好多遍,还可以写成另外的一种形式
CheckObject.prototype = checkName : checkPassword : 方法不能混着用,要不然会覆盖 方法 a = a.checkEmail();
经常使用jQ都知道链式操作,其实实现方法很简单就是将当前的对象作为函数的返回值return出去就行了,
链式操作
CheckObject = .checkName = .checkEmail = .checkPassword = obj = obj.checkEmail().checkName().checkPassword();函数的祖先
如果习惯类的形式还可以这样写
f = f.checkEmail();
但是这样做 在这里是不允许的 因为污染了全局变量Function
可以用这种方法就可以避免了
Function.prototype.addMethod = [name] = methods = methods.addMethod('checkName', console.log('姓名' methods.addMethod('checkEmail', console.log('邮箱' methods.checkEmail();
当然上面你嫌写了好多个methods对象,你可以用链式方法
Function.prototype.addMethod = [name] = ; methods = methods.addMethod('checkName', console.log('姓名' }).addMethod('checkEmail', console.log('邮箱' methods.checkEmail();
对于习惯类的人来说也可以这样写
Function.prototype.addMethod = .prototype[name] = Methods = Methods.addMethod('checkName', console.log('姓名' }).addMethod('checkEmail', console.log('邮箱' m = m.checkEmail();
javaScript是一种灵活的语言,使用javascript可以编写出更多的优雅的代码艺术,我会在接下来的一段时间内将一些常用的设计模式的写法,分享给大家,如果你能学到一些知识,我会非常开心的,文章如有不足之处,还望可以提醒。
原文链接:https://www.f2er.com/nodejs/238725.html