如何掌握腾讯级别高质量代码?小白请看这里:JS设计模式,教你如何追到心仪的女神

216 阅读2分钟

前言

  • 设计模式是leetcode之外,顶级大厂代码能力的测试题。JavaScript设计模式为你提供了一种结构化的、可重复的方法来解决JavaScript开发中经常出现的问题。

今天我们来聊聊设计模式中的代理模式。我会使用通俗易懂的语言与生动有趣的例子,附上代码,带大家了解这一种设计模式~

正文

1.对象

对象是一种复杂的数据类型,对象的本质是属性加方法,请看下面这段代码来了解什么是对象

const  kunkun = {
            name: 'kunkun',
            age:20,//数值类型 
            hometown: '南昌',
            girlfriend:null,//null 空
            city:undefined,//未定义
            hobbies:['刷剧','看小说'],//数组也是对象
            isSingle: true,//布尔值
            }

我们使用对象字面量的方法创建了一个对象实例 kunkun,并赋予了几个属性,name,age,hometown,girlfriend,city,hobbies,issinggle

  • . 对象字面量:JavaScript中创建一个自定义对象有两种方法,一种是使用new,另一种是使用对象字面量形式。对象字面量是一个名值对列表,每个名值对之间用逗号分隔,并用一个大括号括起。 各名值对表示对象的一个属性,名和值这两部分之间用一个冒号分隔。

    20岁的坤坤还是单身,当他喜欢上了校花小美时,当然就要给女神送花花咯

const xm = {
            name: '小美',
            xq: 20,
            hometown: '丰城',
            }

20岁的小美深深的吸引着坤坤,害羞的坤坤不好意思直接送花给小美,于是通过小美的室友小红来传递他的心意

            name: '小红',
            hometown: '抚州',
            //实现了和小美一样的接口,就可以互换
            receiverFlower: function (sender) {
                console.log('收到' + sender.name + '鲜花');
                //if (sender.name === '坤坤){
                console.log('啊,让我们在一起吧....');
                //}
                setTimeout(function () {
                    xm.xq = 99;
                    xm.receiverFlower(sender);
                }, 2000)
            }
        }

代理模式

const xh = {
            name: '小红',
            hometown: '南昌',
            // method  接口 Interface
            receiveFlower(sender){
                if(xmemotion >= 80){
                    xmreceiveFlower(sender)
                }
                else{
                    setTimeout(function(){
                        xmemotion = 99
                        xmreceiveFlower(sender)
                    },2000) //在2秒后,小美心情变成99
                }
                kunkunlower(xh) 
             //输出 小美收到坤坤
             //    我们在一起吧
             

在这里我们运用到了代理模式,代理模式是一种通过代理对象对真实对象的访问:坤坤把花给小红,通过小红观察小美的心情,当xmemotion >= 80时,小红把花转交给小美,坤坤就可以和小美在一起了。