|  | 
 
| 
本帖最后由 不二如是 于 2018-7-5 10:32 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 关于为什么要学习JavaScript设计模式,请看:传送门
 
 
 
 
 上一节尾声,小不二最后被玄武的代码难住了:
 
 复制代码var  checkObject = {
        checkObject.checkName=function(){},
        checkObject.checkPassword=function(){},
        checkObject.checkEmail=function(){}
    }
 看到再次陷入沉思的小不二,玄武说到。
 
 “这么写,确实有些诡异,但是我们先声明一个对象,然后为它添加方法,在JS中函数也是对象,所以这么写完全没问题。”
 (补充:0 2 1 8 ★JS就是tmd面向对象语言 |【万物皆对象】)
 
 “还有,这么写的使用方式和之前一样,比如”checkObject.checkEmail()。"
 
 “是的,但是,玄武大佬,这么写会不会让别人调用我的方法时,变得有些麻烦?”
 
 “很好,的确是这样的,因为这个对象不能在复制一份,当它用new关键字创建新的对象时,新对象是不能继承这些方法的。”
 
 “那我们这么写还有什么意义吗?”
 
 “意义很大,因为上面的这种写法,只要在优化下,让它可以被复制,我们就获得了一个真对象。”
 
 小不二的头有点晕。
 
 “小不二,你知道怎么才能让我这个方法从假对象变为真对象吗?”
 
 “嗯,是不是这样加一个return?”
 
 小不二修改了上面的代码:
 
 复制代码var  checkObject = {
        return{
            checkObject.checkName=function(){},
            checkObject.checkPassword=function(){},
            checkObject.checkEmail=function(){}
        }
    }
 “对的,将这些方法放在一个函数对象中,这样每次调用這个函数时,就会把之前写的对象返回出来。”
 
 小不二,看到自己写对了,心里又高兴了起来,还好小甲鱼老师之前讲过~
 
 “是的,这样执行过程中表面上是checkObject类对象,实际上返回的是新对象,这样别人调用我的代码也不会相互影响了。”
 
 小不二边说,边把调用写好:
 
 复制代码var tst = checkObject();
    tst.checkName();
 "嗯,很好",玄武大佬鼓励到。
 
 “通过创建一个新对象完成了我们的需求,但是呢,它不是一个真正意义上的创建方式哦,并且创建的对象tst和对象checkObject没有任何关系(返回的对象本身和checkObject对象无关)。只要在这么优化下就可以了”
 
 玄武又修改了小不二的代码:
 
 
 "这样写后,就可以用checkObject类创建的对象了。"
 
 “那么我们使用它还像之前那样创建对象的方法创建吗?”,小不二问到。
 
 “肯定不是啦,既然是一个类,就要用new来创建了~”
 
 “哦哦,我知道了,是不是这么写”
 
 
 复制代码var  checkObject = {
            this.checkName=function(){},
            this.checkPassword=function(){},
            this.checkEmail=function(){}
    }
    var tst =new checkObject();
    tst.checkName();
 “没错。”
 
 “大佬,那当我和同事都对类实例化(类创建对象),我们每个人都会一套属于的自己的方法?”小不二不解的问到。
 
 此时玄武大佬的手机响了,是一位重要的客户(金主)打算对项目需求进行修改。。。
 
 玄武指了指自己的电话,小不二知趣的抱起电脑回到自己的工位,整理刚才学到的东西。
 
 
 预知后事如何,请看下回 分解  
 
 
 
 课后作业
 
 
 1、为什么小不二用return创建对象的方式不是真正意义上的类的创建方式?
 
 复制代码var  checkObject = {
        return{
            checkObject.checkName=function(){},
            checkObject.checkPassword=function(){},
            checkObject.checkEmail=function(){}
        }
    }
 
 
 答案:
 
 
 
 
 
 如果有收获,别忘了评分
  : 
 
 
 
 这位鱼油,如果喜欢JS-设计模式,请订阅 专辑☞(传送门 )(不喜欢更要订阅   ) 
 
 | 
 评分
查看全部评分
 |