JavaScript基本类型有5种:Undefined、Null、Boolean、Number、String。
引用类型:Object
一、属性 1)基本型没有属性,而对象才有,比如下面代码: var n = 4; //Number n.name = "i number"; alert(n.name);以上代码的执行会返回:Undefined。说明n.name不存在。
2)而引用类型是可以的,如下代码:
var o = new Object(); //Object o.name = "i Object"; alert(o.name); 二、复制值
1)基本类型复制值是拷贝一份。如下代码:
var n1 = 12; //Number var n2 = n1; n2++; alert(n1 + " " + n2);结果是12 13,说明这两个变量的值是在不同空间,互不影响。
2)而引用类型就不一样了,应用类型复制值是复制句柄,如下代码:
var o1 = new Object(); //Object var 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; //Number var empty = " "; //String var d; //Undefined var nl = null; //Null var b = true; //Boolean var 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操作符。