00:00
Hello,大家好,这个小节呢,我们来介绍一下symbol它的一个使用啊,Symbol的一个使用场景呢,就是来给对象添加这个属性和方法。啊,表示独一无二的啊,再说一遍,就是symbol的一个作用,它表示独一无二的值啊,就是给对象去添加属性和方法。干这个用的啊,好了,咱们来举个例子,比如说现在有一个对象叫game,我们想在这个对象里边呢,加两个方法。啊,一个呢是跟up相关的,一个呢是跟down相关的。注意,我说是相关,并不是说要起这两个名字,但是呢,我们能不能直接这样去写呢?game.up这样写可不可以呢?猛然间呢,觉得这样做好像可以,但是呢,这样做呢,有一定的风险。啊,为什么呢?因为现在咱们给它扩展,咱们不知道里边到底有没有这个up。
01:02
有没有这个当不确定,所以说咱们想快速完成这个事儿啊,还挺麻烦啊,咱还得看看里边这个结构啊,然后如果结构简单,哎,可能啊几秒钟就发现了是吧,但是如果结构比较复杂,那你可能要花很长时间才能啊,才能决定啊下一步该怎么去命名。没错吧,哎,所以说这个时候呢,咱们可以借助于symbol来完成这个事情,它呢就变得非常非常简单高效且安全。举个例子好了,我先声明一个对象。Let methods。等于一个对象up冒号一个属性,Down冒号一个属性,注意,这是我自己声明的,对象up和down呢,肯定是不会冲突的。啊,然后在里边我来一个symbol。括弧下边这块我再来一个symbol。客服,也就是说我这个对象里边呢,有两个属性,Up和down,对应的都是symbol类型的值。
02:02
好,那接下来的话呢,我开始给这个game呢去扩展方法,怎么扩展呢?看一下game括弧methods.up等于一个function。哎,Can扰lo,我可以好。啊,改变这个形状。好,然后呢,下边再来一个。然后呢,methods.down然后呢?Log。我可以干嘛呢,快速下降。啊,快速的下降。那么此时你可以看一下啊,我们可以很安全的,而且很快速的把这两个方法加到对象上面。而且呢,是不会出问题的,也不会破坏他原来那个啊,原有的一些属性,一起来看一看保存。点开它,你看这name有up和down,有,就它这个对象原来本身就有up和down这么两个方法,然后呢,我又想给他加两个,OK,这有一个symbol,这是加的一个,然后再来一个symbol,这是加了另外一个啊,安全的向这个对象里边加了两个方法。
03:20
好,这是一种添加方式,还有另外一种添加方式,我来给他演示一下,诶把这个呢,我先注掉,比如说咱们在下边呢,再来一个啊let,然后来一个咱们换一个吧,好吧,来一个这个游戏是吧,来一个对象。然后name等于一个,诶,狼人杀。啊,我想呢,为这个对象添加独一无二的一个方法。那么这个时候我们该怎么去做呢?直接写symbol可不可以呢?直接写symbol这里是不可以的。为什么呢?因为这是一个动态值,它不是一个固定的属性啊,如果说你要起一个这个symbol的一个,或者起一个这个什么就是固定的名字,比如说咱们写一个啊S说话。
04:06
啊,这样子可以,但是呢,你这个symbol这是一个表达式。是一个动态的,所以说这种场景咱们应该呢,补上中括号。啊,通过这样的方式来添加这个属性,当然里边你也可以加一个描述字符串来一个C。好在里边可以,诶l log,哎,我可以发言。啊,这是一个,然后咱们可以再来封装一个,再来添加一个这个方法啊,Symbol里边来一个哎,自爆啊。冒号function。啊。哎,我。可以自爆是吧?自爆。这样的话也是可以很轻松的哟,等会儿啊,咱这写的有点问题咦。IE。诶哦,这帮写个逗号,Sorry啊。
05:01
忘写个逗号,没有问题,好了,接着的话咱们来看一看这个结果,Consult log log,打印一下这个游戏保存。OK,点开它狼人杀是吧,Symbol一个方法,然后symbol自爆一个方法。啊,这样的话啊,也可以呢,为我们这个对象添加symbol类型的属性。好了,那么这个小节呢,我们啊,关于给对象添加symbol类型的属性的两种方式,就先说这么多。
我来说两句