js数值为引用类型(object), 传递参数(参数为object)按引用传递,并非书中按值传递
来源:互联网 发布:al是什么软件 编辑:程序博客网 时间:2024/06/06 18:23
知识:
基本数据类型( Undefined、Null、 Boolean、Number、String);这5类基本数据类型是按值访问,因为可以操作变量中的实际值。
引用数据类型(object);js与其他语言不同,不允许直接访问内存中的位置,也就是说,不能直接操作object的内存空间。在操作object时实际上是在操作object的引用,而不是实际的object。故,引用类型的值是按引用访问的。
一、基本数值类型的操作与理解
var num1 = 6;
var num2 = num1;
这里num1 和 num2 除了值相等以外,没有半毛钱关系。
二、引用数据类型的操作与理解
var obj1 = new Object();
var obj2 = obj1;
obj1.age= 12;
此时,obj1 和 obj2都是{age: 12}
若是如下代码
var obj1 = new Object();var obj2 = obj1;obj1.age= 12;obj2.name='wang';
此时obj1 和 obj2 都是 {age:12,name:“wang”}
obj1 和 obj2 类似与我们唯一识别的身份证号或者学号,对他们操作都是直接操作堆栈中的Object。
但是,当我们
var obj1 = new Object();var obj2 = obj1;obj1.age= 12; //obj1 和 obj2 都是 {age:12}obj2.name='wang'; //obj1 和 obj2 都是 {age:12,name:“wang”}obj2 = new Object();//这一步,obj2有一个全新的Object,就跟之前的obj1不在有关系obj2.color = 'red';//obj1 是 {age:12,name:“wang”}, obj2是{color:"red"}console.log(obj1);//{age:12,name:“wang”}console.log(obj2);//{color:"red"}
这一步的结果使我觉得 《js高级程序设计》第三版4.1.3参数传递中 译者与我的观点不一样。
书中
function setName(obj) { obj.name = 'Nicholas'; obj = new Object(); obj.name = 'Greg';}var person = new Object();setName(person);console.log(person.name);//'Nicholas'
我认为函数setName中的第一行,并不是按值传递,而是直接按引用传递,修改的person创建的Object的name。第二、三行重新new 了一个全新的Object,跟外面的person的Object没有半点关系。只不过是在函数里边而已,对person来说,第二行是否在函数中,并没有任何关系。
0 0
- js数值为引用类型(object), 传递参数(参数为object)按引用传递,并非书中按值传递
- ECMAScript中函数传递的参数是object的话,是按值传递还是按引用传递?
- JS变量传递参数是按值传递还是按引用传递
- 传递引用类型参数(ref)
- 传递引用类型的参数
- 引用类型参数的按值传递
- 方法参数传递(引用传递)
- JS 参数传递到底是值传递还是引用传递?
- js 中参数传递(值传递和引用传递)
- js 基本类型和引用类型 变量复制 参数传递
- Python参数传递 - 引用传递&值传递
- python按引用传递参数
- 基本类型/引用类型的参数传递
- 引用传递参数
- 引用数据类型参数传递
- 参数传递引用
- 引用数据类型参数传递
- 引用参数传递
- iOS仿支付宝账单饼状图
- plsql的配置ip文件tnsnames.ora
- egret导出html5项目与Thinkphp结合
- Android File 转Inputstram,跳转手机sdcard 获取指定文件
- 【SAP HANA】新建表以及操作数据(3)
- js数值为引用类型(object), 传递参数(参数为object)按引用传递,并非书中按值传递
- 数据结构实验之链表七:单链表中重复元素的删除
- Android Binder连接池
- Spring Cloud 服务注册与发现(一)
- clone 远程仓库到 eclipse或者myeclipse
- java 类加载器
- java基础之类加载过程
- Apache日志配置详解(rotatelogs LogFormat)
- 工作笔记