00:00
好,我们来看这里面的第八个例子,叫对象拓展预算服务。那这边呢,再新建一个文件。啊,然后接下来呢,我们先来定义一个对象吧,Let person等于比如说这个对象呢,我建议。Name,这个name他给我来的username username,然后接下来呢,这块我写王路飞,嗯,然后后面这块呢,我写age,等于比如说19,好,嗯,这个是我定义了这样的一个用户哈,然后接下来呢,比如说我想把这个。用户的这个值呢?变量的值呢?我付给另一个变量someone。等于。Person,好,现在呢?打印一下这个person和someone cance.person pencil.lolo。
01:10
Someone,好,我们来运行一下。No。零八了啊,路飞A19,王菲一九是吧,啊好,那接下来呢,你比如说我,嗯。想再改一个用户的一个名字,比如说我把三的名字给他改一下,三点就name,嗯,叫。要乔班吧,好,然后接下来呢,问就是我在打印这个和someone的时候,它的值是什么啊,大家可以想一想,那提示一下大家的话呢,就是javascript啊,他当时在编写的时候呢,他参考了Java的内存管理。
02:03
那也就是说它的内存这一块的堆和栈的特性和Java是一模一样的,那这样的话,大家就能得出一个结论。就是。两个对象的名字都给改了,为什么?因为这个地方我们是引用传递,对不对?好,所谓的引用传递啊,是把当前的这个person对象的引用地址传递给了someone啊,所以呢,Someone和person呢,它引用的是同一片内存空间当中的同一个对象,也就是说到目前为止,我们的系统当中实际上只有这一个人,只不过person和someone是这一个人的两个不同的代号而已,那这样的话呢,你无论使用person去改这个人的名字,还是使用someone去改这个人的名字,那么最终改到的都是这几个人,所以呢啊,最后我们打印出来两个人的名字都被改掉了,那么在javascript当中呢,实际上我们也可以做一个对象的拷贝,而不是引用传递啊,我们来看一下怎么去做,叫let someone,什么叫对象的拷贝呢?这个地方我们用对象扩展运算。
03:14
字面上理解的话呢,就是我要把person里面的点点点这个那个什么的全都依次的考虑到3万。明白吧,啊好,那么这就是变辅助你记忆的一个方式啊,对吧,Person里面的这个呀,那个呀,那个呀,这个呀,都考虑到someone啊,就大家好,然后呢,这样的话呢,我们再来看这个结果。好,大家看是不是这个结果跟刚才的结果就不一样了,也就意味着现在我们的person和someone是完全的两个不一样的对象了,它指向内存当中的两片独立的空间,Person是person someone是someone,所以在这个地方呢,当你改变someone的时候,上面的这个person呢,并没有被改变,所以最终我们打印出来的person和someone呢,就是两个独立的人了。
04:05
啊,所以这个就是对象拓展运算符,当然了,对象拓展运算符实际上它在Java写规则当中,它的这个用处还特别多啊,那在这里面我就不深入给大家讲解了,因为对于我们现在这个Java斯克的水平来说的话,要理解它的其他的功能特性的话,还是有点困难的,那么在我们后面的项目当中呢,大家理解到这一块已经足够了啊,所以这是我们的对象拓展运算符。
我来说两句