js对象

对象

定义

对象就是一个存储着若干键值对的容器(查找速度快)

key的类型必须是字符型或symbol型;
var obj={"a":1,5:10,true:{}}
对象名.属性的形式可以修改属性值或增加键值对,前提:该属性必须是已知的字符型;
属性为非字符形时:
使用对象名[“属性名”],通过隐式转换成字符型来操作键值对;

当属性为变量时:
使用属性名[变量名]  如:
obj【key】 此时会将变量的值作为对象obj的属性;另一种写法就是直接在对象内部使用【key】;


对象没有长度,但在js中存储是有序的,按照先后顺序;

对象的存储

对象是以引用地址的形式存储在栈中的变量;对象内容也许会一样,但地址一定不一样,因为这是两个对象
var a={b:2};
        var c=a;
        a={b:2};
        a.b=4
        console.log(c)  //b:2
        console.log (a)  //b:4

对象的遍历

prop是一个变量;
for(var prop in obj){
		//遍历对象的属性名——key
}
prop——指代对象第一层中的每一个属性
obj【prop】——指代对象的属性值value

栈和堆

变量名存储在栈中,对应的值类型有字符型,数值型,布尔型,未定义型,symbol型,这些值可以存在栈中;
引用类型都存储在堆中,在堆中以一个引用地址来存值,将引用地址赋值给栈中的变量

注意对 对象的改变会提升在语句块前边,但在显示时会有缓存问题

内存泄漏

运行时不断创建对象,这些对象不做垃圾回收就会造成内存泄漏;

垃圾回收

当一个对象不再使用,这个对象引用地址复制的所有变量的值设为null,当内存超出一定值,系统会自动将这些没有引用地址的对象回收。

delete

可以删除对象中的属性,但无法删除全局变量的值

对象浅复制

方法一:
目标obj【prop】=源obj【prop】
	目标建立一个空对象
	将源对象键值对遍历
	将属性赋值给属性,属性值赋值给属性值——obj【prop】=目标obj【prop】。
方法二:
目标建立空对象
使用Object.assign(目标,源);
   var  o={a:1,b:2,c:{value:10}};
    var o1={};
    Object.assign(o1,o);
    console.log(o1)
    o.a=10;	//o1 a:1;说明复制成功
    o.b=20;	//o1 b:2说明复制成功
    o.c.value=100; //o1 c:100 复制失败;因为o1只复制了o中c的引用地址,并没有将c中的键值对复制过来;
    o.c和o1.c指向同一个对象。

对象中的属性都转化为字符串的深复制

var 新对象=JSON.parse(JSON.stringify(源对象))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值