JavaScript 引用类型

本文通过一个具体的示例探讨了JavaScript中引用类型的特性。实验证明,当修改对象属性时,会影响到所有引用该对象的地方;但当对象本身被重定向时,则不会影响到其他引用处,它们会保持原有引用不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在JS中,数值、布尔值、null和undefined属于基本类型,而对象、数组和函数属于引用类型。

该博文要解决的两个问题是:

  • 当A引用B后,A与B的关系是:== 、===,还是其它。
  • 当A引用B后,B被重定向后,A是保持原引用,还是跟随B的新指向。

/**
 * Filename: AppointTest.js
 * Description: This file is use to find out how a appiont work.
 * Author: 猎空de代码
 * Date: 2012/3/8
 */
Ext.onReady(function() {
	/**
	 * Function for print
	 */
	var print = console.log;
	var printAll = function(arr, obj) {
		print("arr[0] = " + Ext.encode(arr[0]));
		print("obj = " + Ext.encode(obj));
		print(arr[0] == obj);
		print(arr[0] === obj);
	}
	
	/**
	 * Test data
	 */
	var obj = {
		name: '猎空de代码'
	}
	var arr = [obj];
	
	obj.age = 23;//这个新增的属性,是否会加入到arr中?
	printAll(arr, obj);
	
	// Redirect obj to another Object.
	obj = {
		hobby: 'thinking'
	}
	printAll(arr, obj);//重定向obj后,arr[0]变了吗?
});

运行结果图:

由上图可以看到,新加入age属性同时影响了arr;

但是当obj重定向后,arr并不跟随obj而变化,而是指向原引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值