今儿个咱来聊聊*这个小东西,一开始我还真没搞明白这玩意儿到底咋用,后来琢磨琢磨,发现还挺有意思。
初识 *
一开始看到这个,我心里还犯嘀咕:这啥呀?跟平时用的那些个方法好像不太一样。然后我就去翻翻那些资料,发现这东西的主要作用就是把一个对象里的“家当”复制到另一个对象里去。
实践出真知
光看字面意思还是有点懵,我就想着,干脆自己动手试试!
我先弄两个对象,一个叫obj1
,一个叫obj2
:
var obj1 = {

name: '张三',
age: 30
var obj2 = {
job: '程序员'

然后,我用,把obj2
里的东西都“搬”到obj1
里:
*(obj1, obj2);

弄完之后,我再看看obj1
,发现它现在长这样:

name: '张三',
age: 30,
job: '程序员'
obj2
里的job
属性还真就跑到obj1
里去!
更进一步
后来我又发现,还能再加一个“家伙事儿”——defaults
。这意思是啥?就是说,如果obj1
里头已经有某个属性,obj2
里也有,那咱就听obj1
的,不让obj2
的覆盖掉。但如果obj1
里没有,那就把obj2
里的拿过来用。
举个栗子:

var obj1 = {
name: '张三',
age: 30,
job: '搬砖的'
var obj2 = {

job: '程序员',
address:'xx地方'
var defaults = {
sex:'男'

*(obj1, obj2, defaults);
我一开始obj1有job属性,obj2也有job,但是这时候我用defaults默认值,执行完之后我看下结果:

name: '张三',
age: 30,
job: '程序员',
address:'xx地方',
sex:'男'

这样obj2的job:'程序员'就会覆盖obj1的job,如果obj2没有address属性,但defaults有sex:'男',也会放进obj1对象里面。
总结
这么一折腾,我算是明白,这东西,就是个“搬运工”,能把一个对象里的东西搬到另一个对象里,而且还能根据你的需要,选择要不要覆盖。这在咱们平时写代码的时候,还是挺有用的,能省不少事儿!