iOS面试点

值拷贝和对象引用

2017-10-19  本文已影响27人  云淡风轻_301b

栈数据结构:先进后出,后进先出

75efbc696df23848b9838d72ea37677a.png

堆数据结构:数据没有固定顺序,在堆操作在堆操作数据可以任何顺序操作


1.png

实例:


p3.png
var num =10;
var bol =true;
var str ="abc”;
var obj = new Object();
var arr = ['a','b','c'];
var person = new Person(100,"jxl",22);

1.基本数据类型:
Number,boolean,string,Undefined, Null,放在栈内存中
简单数据段 数据大小确定 内存空间自动分配

2.对象:
object ,arr构造函数对象
对象的名称存储在栈,对象的内容属性都在堆区

值拷贝:

var a = 10;
var b = a;
console.log(a = b);
//拷贝的是a的值,b是重新开辟的空间

对象引用:

var a =[1,2,3,4,5];
var b =a;
//此时b=[1,2,3,4,5];是在堆中取得a的地址,
b和a共用一个地址,a,b有任何一个数值改变,都会变

例:函数传参---对象引用

 var a = [1,2,3];
 function test(num){
    //相当于num =a;把对象当做参数传递到函数内部,也是对象引用
    //1.如果对参数进行操作,对象也会发生变化
    // num[0]=4;
    // num[1]=5;
    // num[2]=6;
    //2.如果对参数重新赋值,对象不会跟着改变
    // num =[4,5];
}
test(a);
console.log(a);
上一篇 下一篇

猜你喜欢

热点阅读