不二如是 发表于 2018-6-20 11:06:03

001 ※ 灵动的JavaScript |【小不二隆重登场!】

关于为什么要学习JavaScript设计模式,请看:传送门





结束了学生生涯的小不二,加入了鱼C科技有限公司。

入职第一天,项目经理,玄武。

就布置给小不二一个任务:
写一个验证用户名、密码、邮箱的验证表单。

经过在鱼C论坛上《零基础入门学习Web》系列的学习,小不二认为这个任务超级简单~

于是很快写下了几个函数:
//    验证用户名
    function checkName(){
      
    }
   
//    验证密码
    function checkPassword(){
      
    }
   
//    验证邮箱
    function checkEmail(){
      
    }

小不二很得意,然后通过SVN/GitLab备份代码。

将创建的代码先提交到项目组指定的文件中。

由于是刚入职的小白,玄武很关照(担心)小不二。

于是,在合并代码时,多看了一下小不二提交的代码。

果不其然,玄武看出了一点问题。

“小不二,过来一下”。

还沉浸在刚才喜悦中的小不二,走到玄武的办公室桌前。

“玄武老大,怎么了?”

“嗯,你刚才提交的代码,我看了一下,怎么那么多全局变量?”

“阿?哪里来的变量?”

小不二心里也在想:“哪里有变量吗,明明只创建了几个函数名而已嘛。是不是玄武大佬,搞错了。。。”

“你不是创建了三个函数吗?”

“是阿”,小不二很纳闷的回复。

心里在想:“神马,难道函数是变量???”

看到小不二那种纠结的小白表情,玄武眼中带着友善。

“小不二,你看阿,如果我这么写,来实现你写的代码可以吗?”

玄武立刻在电脑上,敲出了这几行代码:


“可以这么写,但是就会有hoist问题(声明提前)”
(详细阅读:0 1 5 7 ★ 寥寥数行代码玩透“hoist”)

“没错,这么写的确有hoist问题,但是我们通过3个变量来保存函数,来实现你的功能。”

“嗯。”

看到小不二还没明白,玄武继续说到。

“你写的将变量名放在function后面,也代表了你的变量,所以说你也声明了3个全局变量。”

“嗯。但是....有什么问题吗?”

小不二心里还是很纳闷,小甲鱼老师明明也是这么写的啊,怎么回事。

看到更加纠结的小不二,玄武接着说。

“从功能上将,当然没问题啦,但是你今天才加入我们的团队,有些开发准则就要遵守。”

"嗯,刚才收到的开发准则,我仔细看了,有些细节是我平时没有关注的。"

“挺好的,那写文档,函数接口说明,你一定要仔细阅读哦,咱们部门的开发都是基于这些标准进行的。”

“好的,请玄武大佬放心,我一定仔细阅读”,小不二认真的看着玄武。

“很好,让我们继续说回上面的问题,当用你那种方法定义函数,如果团队中的其他人员也定义了,那么就会发生冲突,甚至覆盖功能。”

“哦哦,我知道了,所以需要将函数保存到一个变量里,这样变量重复,函数功能也不会冲突。”,小不二豁然开朗。

“对,就是这个意思。小不二,我考考你,你觉得还有什么更好的写法吗?”

“嗯,我还想到一种。”小不二此刻正在脑海中翻江倒海的想小甲鱼老师教过的“用对象收编变量”。

想到方法后,小不二赶紧用手头的电脑写下:
varcheckObject = {
      checkName:function(){},
      checkPassword:function(){},
      checkEmail:function(){}
    }

看到小不二电脑上的电脑,玄武很高兴,自己招了一个对的人。

看来跟小甲鱼老师学过编程的人,基础就是这么扎实~

“小不二,你写的很棒,对象的方法也是一种很好的解决方案,这样我们就可以通过点方法遍历内部,通过检查对象checkObject,来访问内部方法。”

“是的,我们将所有的函数作为checkObject对象的方法,这样我们就只有一个对象,而我们想要使用它们也很简单。”

看到玄武赞同的点头,小不二继续说。

“这样当我们需要检测密码就可以这样写checkObject.checkPassword()。”

玄武发现小不二有点得意,决定要在考考他。

“小不二,既然你可以通过对象创建方法,那我这么写可以吗”

边说着,玄武,修改了小不二的代码:


"嗯.........."小不二此时有点紧张。

..........

预知后事如何,请看下回分解{:10_303:}



课后作业


1、小不二的第一种写法:
//    验证用户名
function checkName (){}

//    验证密码
function checkPassword(){}

//    验证邮箱
function checkEmail(){}

会带来哪些麻烦?

2、刚入职的小不二,用的SVN/GitLab是干什么的?

3、是否可以用点方法访问,访问对象内部的函数方法?



答案:
**** Hidden Message *****



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢JS-设计模式,请订阅 专辑☞(传送门)(不喜欢更要订阅{:10_297:} )

http://xxx.fishc.com/forum/201803/21/151715umqz1qoywp11wjbq.gif

看到美媚流口水 发表于 2018-6-20 11:48:33

看看

朋老师 发表于 2018-6-21 10:07:53

看看{:10_245:}

hhhhhhey 发表于 2018-7-3 18:16:59

学习学习

qweqwe 发表于 2018-7-4 10:23:13

学习了一下

喳喳歐 发表于 2018-7-4 12:16:26

感谢不二大佬的分享

hb8689 发表于 2018-7-4 15:17:32

顶起来~~~~~~~~~~

2506846774 发表于 2018-7-5 09:00:21

看看

oujq2541 发表于 2018-7-20 10:00:26

来学习学习

lvfen 发表于 2018-7-26 21:53:23

kanaknaknaknakan

TCY 发表于 2018-12-4 17:20:10

看不懂中

TCY 发表于 2018-12-6 16:26:31

GitLab是Git的升级版吗?

优时风 发表于 2020-6-20 16:37:05

1

kmq116 发表于 2021-1-15 14:57:56

代码管理,可以用点访问

kaneko 发表于 2021-2-25 22:44:16

看看

jack6666 发表于 2022-10-21 19:19:22

1

张郝源 发表于 2022-11-15 23:25:45

qingyunvi 发表于 2022-11-17 16:57:48

不会写

CKP_1998 发表于 2022-12-22 20:07:42

{:10_243:}{:10_243:}{:10_243:}
页: [1]
查看完整版本: 001 ※ 灵动的JavaScript |【小不二隆重登场!】