在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而变化,而是指向原引用。