JS对象的使用(赋值+复制+克隆+销毁)

对象是引用型、复合型数据,因此对象的操作主要包括引用、复制、克隆和销毁等。

引用对象

对象是引用型数据,赋值操作实际上就是赋予地址。

示例

下面示例定义一个对象 obj,然后赋值给 obj1 后,obj 就全等于 obj1,它们都引用同一个对象,也就是说它们的值都是同一个地址。

 
  1. var obj = { //定义对象
  2. x : true,
  3. y : false
  4. }
  5. var obj1 = obj; //引用对象
  6. console.log(obj1 === obj); //true,说明两个对象相同
  7. console.log(obj1.x); //true
  8. console.log(obj.x); //true

复制对象

复制对象就是利用 for/in 遍历对象,然后把每个对象成员赋值给另一个对象。

示例

在下面示例中,通过复制操作把 obj 的属性转移给 obj1 对象。

 
  1. var obj = { //定义对象
  2. x : true,
  3. y : false
  4. }
  5. var obj1 = {};
  6. for (var i in obj) { //遍历obj对象,把它的所有成员赋值给对象obj1
  7. obj1[i] = obj[i];
  8. }
  9. console.log(obj1 === obj); //false,说明两个对象不同
  10. console.log(obj1.x); //true
  11. console.log(obj.x); //true

克隆对象

克隆对象也是一种复制操作,不过它的执行效率更高一些。

【实现方法】

1) 封装一个克隆工具。为 Function 类型扩展一个原型方法。

 
  1. var clone = function (obj) { //对象克隆方法
  2. function Temp() {}; //新建空构造函数
  3. Temp.prototype = obj; //把参数对象赋值给该构造函数的原型方法
  4. return new Temp(); //返回实例化后的对象
  5. }


2) 调用工具函数 clone() 把 obj 克隆给 obj1。

 
  1. var obj = {
  2. x : true,
  3. y : false
  4. }
  5. var obj1 = {};
  6. obj1 = clone(obj);


3) 检测对象 obj1,其拥有对象 obj 所有属性,但是它们不全等。

 
  1. console.log(obj1 === obj); //false,说明两个对象不同
  2. console.log(obj1.x); //true
  3. console.log(obj.x); //true

这里通过直接赋值的方式把一个对象传递给另一个临时构造函数的原型对象,然后实例化类型函数,并返回这个实例对象,它拥有了参数对象的所有成员,但是不再与原参数对象保持联系。

销毁对象

JavaScript 能够自动回收无用存储单元,当一个对象没有被引用时,该对象就被废除了,JavaScript 会自动销毁所有废除的对象。把对象的所有引用都设置为 null,可以强制废除对象。

示例

当对象不被任何变量引用时,JavaScript 会自动回收对象所占用的资源。

 
  1. var obj = { //定义对象,被变量obj引用
  2. x : true,
  3. y : false
  4. }
  5. obj = null; //设置为空,废除引用

关注微信公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由C语言中文网站长运营,每日更新,坚持原创,敢说真话,凡事有态度。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值