鱼C论坛

 找回密码
 立即注册
查看: 2159|回复: 5

[庖丁解牛] 003 ※ 一个检测类引出的函数祖先

[复制链接]
发表于 2018-6-21 17:28:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2018-6-22 16:39 编辑

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




1.gif


上一讲的尾声,因为玄武大佬要接一个重要电话,而暂且结束。

回到工位的小不二仔细整理了一下,玄武大佬刚才教自己的东西简直太nice了,深感:“实践才是检验真理的唯一标准。”

时间过的很快,吃过午饭的小不二,在和同事聊聊天后,继续投入到了下午的工作中。

下午正在写项目进度报告的玄武,突然想起来上午和小不二被打断的对话。

通过内网的通讯软件,呼小不二过来~

一看到,玄武大佬呼唤自己,小不二抱着电脑又过去了。

“小不二,上午的概念,理解的怎么样了?”

“嗯,很棒,好东西细节性的东西,原来自己都没有好好在意~”

“是阿,对于你们这些只啃过书本的新手,最缺的就是经验,项目开发上有问题可以随时问我或者问同事哦”

“嗯嗯,好的好的”,听到这么照顾自己的上司,小不二内心很感动~

“对了,上午我记得最后你问了一个什么问题?”

“嗯,是的,我当时想问您:当我和同事都对类实例化(类创建对象),我们每个人都会一套属于的自己的方法?

边说着,小不二便打开了代码:
  1. var  checkObject = {
  2.             this.checkName=function(){},
  3.             this.checkPassword=function(){},
  4.             this.checkEmail=function(){}
  5.     }

  6.     var tst =new checkObject();
  7.     tst.checkName();
复制代码


“当然了,你看,我们是把所有的方法放在了函数内部,然后通过this定义,所以每一次通过new来创建新对象的时候,新创建的对象都会对类的this上的属性进行复制。”

玄武看小不二听的入神,继续说到。

“所以这些新创建的对象都会拥有自己的一套方法。”

听到这里,小不二突然想到了小甲鱼曾经说过的新对象内存消耗问题。

“是不是这样造成的消耗是很大的?”

“可以吗,连这个都知道,我们可用原型来修改下。”
(推荐阅读:0 0 8 6 ★ Js对象与禅 |【南无阿弥陀佛】

修改如下:
  1. var  checkObject = function(){
  2.         checkObject.prototype.checkName=function(){},
  3.         checkObject.prototype.checkPassword=function(){},
  4.         checkObject.prototype.checkEmail=function(){}
  5.     }
复制代码


"这样我们创建实例的时候,创建出来的对象所拥有的方法就只有一个了,因为protoype原型依次寻找,找到的方法都是同一个,它们都是绑定在checkObject类的原型上。"

玄武继续说道。

“这种方式我们要将prototype写很多遍,所以还可以这么写”

修改如下:
  1. var  checkObject = function(){
  2.         checkObject.prototype = {
  3.             checkName : function(){},
  4.             checkPassword : function(){},
  5.             checkEmail : function(){}
  6.         }
  7.     }
复制代码


"这么写的话,有一点要注意,这两种方式不能混用,如果混用,后面为对象的原型对象赋值新对象时,那么它将会覆盖掉之前对prototype对象赋值的方法。"

“嗯嗯,好厉害,不过我们要使用这种方式定义的类是不是就要这么写”,小不二心里早已崇拜的不要不要的~

代码:
  1. var a = new checkObject();
  2. a.checkName();
  3.     a.checkPassword();
  4.     a.checkEmail();
复制代码


"没错,但是你发现没有,你的对象a写了3遍,想一想有什么办法优化吗?"

“嗯.......”

预知后事如何,请看下回分解





课后作业


1、如果将两种prototype创建类方式混用,会发生什么?



答案:
游客,如果您要查看本帖隐藏内容请回复





如果有收获,别忘了评分


                               
登录/注册后可看大图


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



                               
登录/注册后可看大图

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-7-26 22:12:11 | 显示全部楼层
kkkkkkkkkk
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 16:54:00 | 显示全部楼层
混乱chaos
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-3 18:01:10 | 显示全部楼层
覆盖
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-21 19:36:47 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-22 20:14:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-4 15:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表