JavaScript基本类型和引用类型的不同

来源:互联网 发布:顶尖数据恢复软件 编辑:程序博客网 时间:2024/06/08 18:40

JavaScript基本类型有5种:Undefined、Null、Boolean、Number、String。

引用类型:Object

一、属性
1)基本型没有属性,而对象才有,比如下面代码:

var n = 4; //Numbern.name = "i number"; alert(n.name);

以上代码的执行会返回:Undefined。说明n.name不存在。

2)而引用类型是可以的,如下代码:

var o = new Object(); //Objecto.name = "i Object"; alert(o.name);

二、复制值

1)基本类型复制值是拷贝一份。如下代码:

var n1 = 12; //Numbervar n2 = n1;n2++;alert(n1 + " " + n2);

结果是12 13,说明这两个变量的值是在不同空间,互不影响。

2)而引用类型就不一样了,应用类型复制值是复制句柄,如下代码:

var o1 = new Object(); //Objectvar o2 = o1;o2.name = "i object";alert(o1.name);
以上代码,我修改的是o2,结果o1也改变了,说明o1和o2的值在同一个空间,而o1和o2只是引用,指向同一个对象。

三、传参

1)基本类型的传参和基本类型复制值一样,如下代码:

(function() {  var n1 = 12;  setNumber(n1);  alert("n1=" + n1);}());function setNumber(n2){n2 = 13;alert("n2=" + n2);}
将n1传递给n2,两个变量是独立的。
2)引用类型的传参和应用类型的复制一样,如下代码:
(function() {  var obj1 = new Object();  setName(obj1);  alert(obj1.name);}());function setName(obj2){obj2.name = "hello js";} 

三、类型检测

typeof操作符,能检测数据类型

var n = 123; //Numbervar empty = " "; //Stringvar d; //Undefinedvar nl = null; //Nullvar b = true; //Booleanvar o = new Object(); //Object(function hello(){alert(typeof n + empty + typeof empty + empty +typeof d + empty +typeof nl + empty +typeof b + empty  + typeof o + empty  +typeof hello);})();
typeof检测基本类型和引用类型,但是对于引用类型,只能知道是Object,但不知道具体。

所有的引用都继承Object对象,所以只要是引用就是Object类型的之类。这对于引用类型来说没有什么用处,所以有了一个instanceof操作符。





原创粉丝点击