Javascritp数据类型的基本类型和引用类型

Javascript的数据类型简单的可分成两组:基本类型和引用类型。数字和布尔值是基本类型,它们使用值来操作;对象(对象、数组、函数)是引用类型,它们使用引用来操作。字符串比较特殊,由于它的长度是任意的,所以看起来它应该属于引用类型,但事实上在Javascript中它通常被当作基本类型,因为它并不是对象,因而你可以将字符串看作是行为与基本类型相似的不可变引用类型,或是将它看作使用引用类型的内部功能实现的基本类型,结果都是一样的。下边我们举几个例子来说明基本类型和引用类型:

<script language="javascript">
var n1,n2;
var b1,b2;
var s1,s2;

n1 = 1;
n2 = n1;
n1 = 10;

b1 = true;
b2 = b1;
b1 = false;

s1 = "mzwu";
s2 = s1;
s1 = "com";

alert("n2=" + n2 + "\n" + "b2=" + b2 + "\n" + "s2=" + s2);
</script>

结果:
n2=1
b2=true
s2=mzwu
这应该是比较好理解的。

<script language="javascript">
var obj = new Object();
var arr = new Array("www","mzwu","com");
var obj2,arr2;

obj.url = "www.mzwu.com";
obj2 = obj;
obj.url = "www.baidu.com";

arr2 = arr;
arr[1] = "baidu";

alert("obj2.url=" + obj2.url + "\n" + "arr2[1]=" + arr2[1]);
</script>

结果:
obj2.url=www.baidu.com
arr2[1]=baidu
obj2原先只是引用obj对象,当obj属性值改变时,obj2的值也随着改变;arr2和obj2同理。

和Javascript的数据类型相比,vbscript的数据类型和javascript不太一样:

<script language="vbscript">
Dim n1,n2
Dim b1,b2
Dim s1,s2

n1 = 1
n2 = n1
n1 = 10

b1 = true
b2 = b1
b1 = false

s1 = "mzwu"
s2 = s1
s1 = "com"

msgbox "n2=" & n2 & chr(13) & "b2=" & b2 & chr(13) & "s2=" & s2
</script>

结果:
n2=1
b2=true
s2=mzwu
这和Javascript一样

<script language="vbscript">
Dim arr,arr2
Dim obj,obj2

arr = Array("www","mzwu","com")
arr2 = arr
arr = Array("www","baidu","com")

Set obj = new RegExp
obj.Pattern="www\.mzwu\.com"
Set obj2 = obj
obj.Pattern="www\.baidu\.com"

msgbox "arr2(1)=" & arr2(1) & chr(13) & "obj2.Pattern=" & obj2.Pattern
</script>

结果:
arr2(1)=mzwu
obj2.Pattern=www\.baidu\.com
这说明在vbscript中,数组也是当做基本类型来操作的,而对象则当作引用类型进行操作。

评论: 0 | 引用: 0 | 查看次数: 4639
发表评论
登录后再发表评论!