<script
type="text/javascript">
document.write("typeof()的用法<br>");
document.write(typeof("")
+ "<br>"); //string
document.write(typeof("hi") +
"<br>");//string
document.write(typeof(200) + "<br>");
//number
document.write(typeof(0) + "<br>");
//number
document.write(typeof(false) + "<br>");
//boolean
document.write(typeof(true) + "<br>");
//boolean
document.write(typeof(new Object()) + "<br>");
//object
document.write(typeof(new Array())+"<br>");
//object
document.write(typeof(new Date())+"<br>");
//object
document.write(typeof(new RegExp())+"<br>");
//object
document.write(typeof(null) + "<br>");
//object
document.write(typeof(new Function())+"<br>");
//function
document.write(typeof(undefined) + "<br>");
//undefined
</script>
结果如下:
typeof()的用法
string
string
number
number
boolean
boolean
object
object
object
object
object
function
undefined
由代码结果分析得:
typeof(null),typeof(Object),typeof(Array),typeof(Date),typeof(RegExp)结果都是object;
typeof()方法只能分辨出number、string、function、boolean数据类型。
那么如何能清楚分辨出其他Array、Date..类型呢?
这里有一个有用的技巧就是运用Object.toString()方法来测试对象类型,其默认的返回形式如下的字符串:[object
class],这里的class可以是用户定义的任何对象,如Window,Object,Array等。我们只需要查看class的值就能辨别出对象的类型。
好,看实验吧!
这里我创建了一个checkType函数,用来检测对象类型。
<script language="javascript">
var num =
1221;
var str = "abc123";
var obj =
{x:2,y:3};
var arr = [3,"df",{}];
var date = new Date();
var func =
function(){};
var error = new
Error();
var exp = new RegExp();
var
n = null;
var un;
document.writeln(checkType(num));
document.writeln(checkType(str));
document.writeln(checkType(obj));
document.writeln(checkType(arr));
document.writeln(checkType(date));
document.writeln(checkType(func));
document.writeln(checkType(error));
document.writeln(checkType(func));
document.writeln(checkType(exp));
document.writeln(checkType(n));
document.writeln(checkType(un));
function checkType(x){
var typeAll =
Object.prototype.toString.apply(x);
return
typeAll.substring(8,typeAll.length-1);
}
</script>
结果:
Number String Object Array Date Function
Error Function RegExp Window Window