码迷,mamicode.com
首页 > Web开发 > 详细

js读书乱炖之初级设计模式

时间:2020-05-02 09:19:29      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:asc   链式   oom   oschina   验证邮箱   ram   scn   变量   object   

初入公司,让写三个验证方法,验证邮箱,验证姓名,验证密码:

function checkName() {}

function checkEmail() {}

function checkPassword() {}

 


等价于:
var checkName = function() {};
var checkEmail = function() {};
var checkPassword = function() {};

 


这两种都是创建了全局变量,容易跟别人命名冲突,造成函数变量覆盖,更好的做法可以将它们放在一个变量中保存,避免覆盖。 即用对象收编变量。这样不容易冲突
var checkObject = {
checkName: function() {},
checkEmail: function() {},
checkPassword: function() {}
};

 


var CheckObject = function() {};
CheckObject.checkName = function() {};
CheckObject.checkEmail = function() {};
CheckObject.checkPassword = function() {};

 


技术图片

类的声明方式:也不久相互影响,相当于复制了一份一样,创建了一个新的实例。用类创建对象
技术图片
 
将方法挂载到原型上: 经尝试,不会相互影响。实例里有checkName的方法,__proto__也有这个方法,则优先访问实例中的方法。
技术图片
 
加入我想调用这个类下的三个方法:则: a需要写三遍:
var CheckObject = function() {
this.checkName = function() {
console.log(111);
};
this.checkEmail = function() {
console.log(222);
};
this.checkPassword = function() {
console.log(333);
};
};

var a = new CheckObject();

a.checkName();
a.checkEmail();
a.checkPassword();

 


将this返回则可以链式调用:
var CheckObject = function() {
this.checkName = function() {
console.log(111);
return this;
};
this.checkEmail = function() {
console.log(222);
return this;
};
this.checkPassword = function() {
console.log(333);
return this;
};
};

var a = new CheckObject();

a.checkName()
.checkEmail()
.checkPassword();

 


我们可以给JS的内置对象类提供方法:但是这种做法并不好。别人创建的函数会被你创建的函数污染。
技术图片

下面这个写法可以给具体实例添加方法:
技术图片

在公共方法addMethod中return this可以链式调用
技术图片

换一种方式:
技术图片

js读书乱炖之初级设计模式

标签:asc   链式   oom   oschina   验证邮箱   ram   scn   变量   object   

原文地址:https://www.cnblogs.com/vwvwvwgwgvervae/p/12815699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!