说明
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
暂无评论内容