javascript复杂类型如何传参

说明

1、在将实参传递给形参的过程中,复杂的数据类型传递给形参的是实参的地址,而非对象实例。

2、函数的形参也可以看作是一个变量。

当我们将引用类型的变量传递给形参时,我们实际上将变量保存在栈空间中的堆地址复制给形参。形参和实参实际上保存在同一个堆地址,所以操作的是同一个对象。

实例

<script>
functionPerson(name){
this.name=name;
}

functionfun1(x){
//8.由于形参x指向地址p,因此输出的仍然是地址p所对应的对象实例{newPerson('刘德华');name='刘德华'}
//9.第二个输出:'刘德华'
console.log(x.name);
//10.对x.name进行了重新的赋值,此时的对象实例改为{newPerson('刘德华');name='张学友'}
x.name='张学友';
//11.第三个输出:'张学友'
console.log('2'+x.name);
}
//1.定义一个复杂数据类型
//2.复杂数据类型变量p在栈中存储地址p,变量p指向地址p
//3.而真正的对象实例{newPerson('刘德华');name='刘德华'}存放在堆中
//4.变量p指向栈中的地址p,地址p指向堆中的对象实例{newPerson('刘德华');name='刘德华'}
varp=newPerson('刘德华');
//5.第一个输出:刘德华
console.log(p.name);
//6.将变量p传递给形参x,即将地址p传递给形参x
//7.然后变量p和形参x都指向了同一个地址,即地址p
fun1(p);
//12.此时p.name的对象实例为{newPerson('刘德华');name='张学友'}
//13.第四个输出:'张学友'
console.log(p.name);
</script>

以上就是javascript复杂类型的传参方法,希望对大家有所帮助。更多Javascript学习指路:Javascript

原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容