JavaScript中值类型与引用类型实例说明

作者:网络 来源:佚名 更新时间:2010-12-12 19:49:11 点击:

JavaScript中值类型与引用类型说明,需要的朋友可以参考下。
 

<script type="text/javascript"> 
var str = 'abced'; 
var obj = new String(str); 
function newToString() { 
return 'hello,world'; 
} 
function func(val) { 
val.toString = newToString; 
} 
func(str); //ps:实际只传入了str的值,因此对它的toString修改是无意义的 传入的str相当于是他的一个副本 修改副本的方法 不影响原来的运算结果 
alert(str.toString()); //结果为 abced 

func(obj); //ps:传入了一个对象的引用(即str本身,或者说是内存地址),因此对它的toString修改将会影响到后来 alert(obj.toString()) 的云寻 
alert(obj.toString()); //结果为 hello,world 
</script> 

附:

JavaScript中的值类型与引用类型

数据类型 值/引用类型 备注

undefined 值 无值

number 值

boolean 值

string 值 字符串在赋值运算中会按引用类型的方式来处理

function 引

object 引
js的值类型和引用类型

 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=gb2312"> 
<title>基本类型/引用类型--值类型</title> 
<script text="text/javascript"> 
var a=1; 
var b=a; 
a=2; 
alert(b);//1 
</script> 
</head> 
<body> 
</body> 
</html> 

值类型的变量直接保存变量值;引用变量却持有的引用(可比较c/c++的指针,一把"钥匙"),通过引用可以迅速找到存储内容的内存区域。
值类型一般是一些固定的字节大小的;引用类型往往存储数组,对象,函数这些实现很难知道占据内存大小的量。
 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=gb2312"> 
<title>基本类型/引用类型--引用类型</title> 
<script text="text/javascript"> 
//引用涉及的内容占据不固定的大小--像数组,对象,函数 
var a=[1,2,3]; 
var b=a;//拷贝的引用值--想象成一个指针 
a[0]=100; 
alert(b);//100,2,3 
</script> 
</head> 
<body> 
</body> 
</html> 

 

 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=gb2312"> 
<title>基本类型/引用类型--字符串</title> 
<script text="text/javascript"> 
//字符串比较特殊,长度不固定应该引用,可是某些行为又像基本类型的 
var a="hello"; 
var b=a;//拷贝的引用值--想象成一个指针 
a="你好";//实际上是又建立另外一个字符串"你好"并指向它 
alert(b);//hello 
//字符串算是一种不变对象 
</script> 
</head> 
<body> 
</body> 
</html>