小白的前端练级之路——灵活的JavaScript(1)

士心是刚刚从事一年前端工作的半个小白,对一切事物都懵懂而又好奇,年前由于个人原因离开了上一家公司,年后返深才知道一个半懂不懂的小白前端要找一份称心的工作有多么地艰难,在海量投递简历之后,终于功夫不负有心人,找到了一份还算满意的工作,从此又开始了前端江湖的练级之路


入职的第一天

入职的第一天,项目经理分下来一个验证表单功能的任务,内容不多,仅需要验证用户名,邮箱 ,密码等,士心接到需求看了看,感觉很简单,便写下几个函数。

小白的前端练级之路——灵活的JavaScript(1)

士心写完之后就要把自己的代码提交到团队项目里,就在此时,一位工作多年的GEEK(后面称作老G)看到士心要提交的代码摇了摇头说:“士心,等一下,先不要提交。”

“怎么了?”“你创建了很多全局变量呀”“变量?我只是写了几个函数而已”“函数不是变量么?”老G反问道。此时士心不知所措,心想:“难道函数是变量?”脸瞬间觉了下来。老G见此情形忙笑着说:“别着急,你看,如果我这么声明几个变量来实现你的功能你看可以么”

小白的前端练级之路——灵活的JavaScript(1)

“一样的,只不过。。。”“对,只不过这个在用的时候要提前声明,但是这么看你就会发现你创建 了3个函数保存在变量里来实现你的功能,而你写的是将你的变量名放在function后而已,它也代表了你的变量,所以说你也声明了3个全局变量”“这有什么问题 呢?”“从功能上讲当然没问题,但是今天你加入了我们的团队,在团队开发中你所写的代码就不能只考虑自己了,也要考虑不影响到他人,如果别人也定义了同样的方法就会覆盖掉原有的功能了,如果你定义了很多方法,这种相互覆盖的问题是很不容易察觉到的”“那我应该如何避免呢?”士心问道。“你可以将他们放在一个变量里保存,这样就可以减少覆盖或被覆盖的风险,当然一旦被覆盖,所有的功能都会失效,这种现象也是很明显的,你自然也会很轻易觉察到”“可是我该如何做呢?”士心迫不及待问道。

用对象收编变量

“一猜你就会问”“好吧,请你先简单地说一下”对象你知道吧,它有属性和方法,而如果我们要访问它的属性或者方法时,可通过点语法向下遍历查询得到。我们可以创建 一个检测 对象,然后把我们的方法放在里面”

小白的前端练级之路——灵活的JavaScript(1)

“此时我们将所有的函数 作为CheckObject对象的方法,这样我们就只有一个对象,而我们要想使用它们也很简单,比如检测 姓名CheckObject.checkName(),只是在我们原来使用的函数 式前面多了一个对象名称。”“哦,这样呀,但是我们既然可以通过点语法来使用方法,我们是不是也可以这么创建 呢?”

对象的另一种形式

“当然,不过首先你要声明一个对象,然后给它添加 方法,当然在JavaScript中函数 也是对象,所以你可以这么做”

小白的前端练级之路——灵活的JavaScript(1)

“使用和前面的方式是一样的,比如CheckObject.checkName()”老G接着说,“现在虽然能满足你的需求,但当别人想用你写的对象方法时就有些麻烦了,因为这个对象不能复制一份或者说这个对象类在用new关键字创建 新的对象时,新创建 的对象是不能继承这些方法的”“但是复制又有什么用呢?”士心不解地问“给你举个例子吧,假如你喜欢javascript,你买了这本书,然后回去你的小伙伴看见了,感 觉很有用,他们也想要怎么办,书就这么一本。但如果你买的是一台打印机,那么好吧,即使你的小伙伴再多,你也有能力给他们每个人打印一本”“哦,有些明白了,但是我该如何做到呢?”

真假对象

老G解释说:“如果你想简单地复制一下,你可以将这些方法放在一个函数 对象中”于是老G将代码写下小白的前端练级之路——灵活的JavaScript(1)

士心看了看代码,思考一下说:“哦,你写的看上去是,当每次调用这个函数 的时候,把我们之前写的那个对象返回出来,当别人每次调用这个函数 时都返回了一个新对象,这样执行过程中明面上是CheckObject对象,可实际上是返回的新对象,这样每个人在使用时就互不影响了。比如想检测 邮箱可以像这样吧”

小白的前端练级之路——灵活的JavaScript(1)

未完待续。。。

最后,如果有想一起学习web前端,HTML5及JavaScript的可以来一下我的前端群733581373,好友都会在里面交流,分享一些学习的方法和需要注意的小细节,每天也会准时的讲一些前端的炫酷特效,及前端直播课程学习

如果想看到更加系统的文章和学习方法经验可以关注的微信号:‘web前端技术圈’或者‘webxh6’关注后回复‘2018’可以领取一套完整的学习视频

猜你喜欢

转载自blog.csdn.net/zwjweb/article/details/84066783