002 ※ 真假对象
本帖最后由 不二如是 于 2018-7-5 10:32 编辑关于为什么要学习JavaScript设计模式,请看:传送门
上一节尾声,小不二最后被玄武的代码难住了:
varcheckObject = {
checkObject.checkName=function(){},
checkObject.checkPassword=function(){},
checkObject.checkEmail=function(){}
}
看到再次陷入沉思的小不二,玄武说到。
“这么写,确实有些诡异,但是我们先声明一个对象,然后为它添加方法,在JS中函数也是对象,所以这么写完全没问题。”
(补充:0 2 1 8 ★JS就是tmd面向对象语言 |【万物皆对象】)
“还有,这么写的使用方式和之前一样,比如”checkObject.checkEmail()。"
“是的,但是,玄武大佬,这么写会不会让别人调用我的方法时,变得有些麻烦?”
“很好,的确是这样的,因为这个对象不能在复制一份,当它用new关键字创建新的对象时,新对象是不能继承这些方法的。”
“那我们这么写还有什么意义吗?”
“意义很大,因为上面的这种写法,只要在优化下,让它可以被复制,我们就获得了一个真对象。”
小不二的头有点晕。
“小不二,你知道怎么才能让我这个方法从假对象变为真对象吗?”
“嗯,是不是这样加一个return?”
小不二修改了上面的代码:
varcheckObject = {
return{
checkObject.checkName=function(){},
checkObject.checkPassword=function(){},
checkObject.checkEmail=function(){}
}
}
“对的,将这些方法放在一个函数对象中,这样每次调用這个函数时,就会把之前写的对象返回出来。”
小不二,看到自己写对了,心里又高兴了起来,还好小甲鱼老师之前讲过~
“是的,这样执行过程中表面上是checkObject类对象,实际上返回的是新对象,这样别人调用我的代码也不会相互影响了。”
小不二边说,边把调用写好:
var tst = checkObject();
tst.checkName();
"嗯,很好",玄武大佬鼓励到。
“通过创建一个新对象完成了我们的需求,但是呢,它不是一个真正意义上的创建方式哦,并且创建的对象tst和对象checkObject没有任何关系(返回的对象本身和checkObject对象无关)。只要在这么优化下就可以了”
玄武又修改了小不二的代码:
"这样写后,就可以用checkObject类创建的对象了。"
“那么我们使用它还像之前那样创建对象的方法创建吗?”,小不二问到。
“肯定不是啦,既然是一个类,就要用new来创建了~”
“哦哦,我知道了,是不是这么写”
varcheckObject = {
this.checkName=function(){},
this.checkPassword=function(){},
this.checkEmail=function(){}
}
var tst =new checkObject();
tst.checkName();
“没错。”
“大佬,那当我和同事都对类实例化(类创建对象),我们每个人都会一套属于的自己的方法?”小不二不解的问到。
此时玄武大佬的手机响了,是一位重要的客户(金主)打算对项目需求进行修改。。。
玄武指了指自己的电话,小不二知趣的抱起电脑回到自己的工位,整理刚才学到的东西。
预知后事如何,请看下回分解{:10_303:}
课后作业
1、为什么小不二用return创建对象的方式不是真正意义上的类的创建方式?
varcheckObject = {
return{
checkObject.checkName=function(){},
checkObject.checkPassword=function(){},
checkObject.checkEmail=function(){}
}
}
答案:
**** 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 不二你好,web课程这个顺序看了半天看不懂啊,前面的00什么的,看着比较混乱,也不知哪个在前,哪个在后。整个模块是哪些,无从看起啊! 黄金猫 发表于 2018-6-20 16:55
不二你好,web课程这个顺序看了半天看不懂啊,前面的00什么的,看着比较混乱,也不知哪个在前,哪个在后。 ...
对应的淘专辑,里面都是按照顺序排列的。
从0-》100的递进,不同专辑数字后面的符号不一样~ 不二如是 发表于 2018-6-20 17:03
对应的淘专辑,里面都是按照顺序排列的。
从0-》100的递进,不同专辑数字后面的符号不一样~
厉害了,我还找到了微信小程序,用力更,不要停! 清晰易懂,感谢 来看看 kkkkkkkkkkkkk 因为不能继承类 为什么 这么写语法会报错啊,为什么对象里面写呢 这种语法对吗,我代码粘过去的,有语法错误 fight 1
页:
[1]