JavaScript-对象

JavaScript 对象是拥有属性和方法的数据。

对象是什么,存储在哪里? 栈,堆 栈的数据读取,写入速度快,但是存储的内容较少 堆的读取和写入速度慢,但是存储的内容多 对象是存储在堆中, 栈中,一旦该变量不再使用时会被清理掉
 1 var str={
 2 // a,b,c,d这些是str的属性,属性的名字是a b c d e  
 3 //属性名看作key
 4 // key是关键字,这个key是不能重复,是唯一的
 5 // 2,2,2,1,2 这是这个属性对应的值,
 6 //属性值,这个值是该属性的唯一值,value
 7             a:2,
 8             b:2,
 9             c:1,
10             d:2,
11             e:3
12         }

键值对:

1 var obj={
2        a:1,
3        b:2,
4         c:3
5    }
6 var obj1={a:1,b:2,c:3};  
7 console.log(obj.a); // .是什么内容下,这里是打印obj的a属性的值     
8 obj.d=obj.a+obj.b;
9 console.log(obj.d); // 创建设置d属性,他的值是obj的a属性值和b属性值的和
引用地址就是指堆中对象存储的地址:
 1 var o={a:1};
 2 var o1=o;//将o对象的引用地址赋值给o1
 3 o1.a=10;//因为o1和o是同一个对象,因此修改o1的属性就相当于修改了o的属性
 4 console.log(o);
 5 
 6 
 7 
 8 var o={a:1};
 9 var o1=o;
10 o={b:2};//重新改变新地址
11 o.a=20;
12 console.log(o1);//a:1
13 console.log(o);//a: 20  b: 2
内存泄漏     对象的引用列表中变量并没有清除掉引用关系,因此就不会被垃圾回收车回收:
 1 var obj={a:1};
 2 obj=3;
 3 //{a:1}  的引用列表中任然是obj
 4 // obj已经是新的值3了,于是没有任何方法再获取{a:1};
 5 // 这个对象也不会被垃圾回收车回收
 6 
 7 obj=null;//在{a:1}的引用地址中删除了obj的引用
 8 obj=3;//重新给obj赋值3
 9       // 当内存占用达到一定的时候,就会有一个垃圾回收车将所有堆中没有引用关系的对象回收掉
10 
11 
12 var obj1={a:1};
13 var obj2={a:1};
14 // 当使用{a:1} 这就是在堆中创建了一个新的对象,就会有一个新的引用地址
15 // 上面使用两个{a:1},这就相当于分别创建了两个新对象,他们的引用地址是不相同的
16 console.log(obj1==obj2);//false

 

 

上一篇:Lambda表达式


下一篇:Dart语言学习(八) dynamic