javascript 如何判断一个对象的类型

时间:2023-12-18 16:49:08
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var class2type = {
'[object Boolean]' : 'boolean',
'[object Number]' : 'number',
'[object String]' : 'string',
'[object Function]' : 'function',
'[object Array]' : 'array',
'[object Date]' : 'date',
'[object RegExp]' : 'regexp',
'[object Object]' : 'object',
'[object Error]' : 'error'
};
function type( obj ) {
if ( obj == null ) {
return obj + "";
}
return typeof obj === "object" || typeof obj === "function" ?
class2type[ toString.call(obj) ] || "object" :
typeof obj;
};
function Foo() {}
function Bar() {}
Bar.prototype = new Foo();
var foo = new Foo();
var bar = new Bar();
console.log(type(''));
console.log(type(undefined));
console.log(type(null));
console.log(type(true));
console.log(type(false));
console.log(type(1));
console.log(type(0));
console.log(type(new String('foo')));
console.log(type(new Number(10)));
console.log(type({}));
console.log(type(new Date()));
console.log(type(new Error()));
console.log(type([1,2,3] ));
console.log(type(new Array(1, 2, 3)));
console.log(type(new Function("") ));
console.log(type(/abc/g));
console.log(type(new RegExp("meow")));
console.log(type(new Object()));
console.log(type(foo));
console.log(type(bar));
console.log(type(/abc/g));
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var class2type = {
'[object Boolean]' : 'boolean',
'[object Number]' : 'number',
'[object String]' : 'string',
'[object Function]' : 'function',
'[object Array]' : 'array',
'[object Date]' : 'date',
'[object RegExp]' : 'regexp',
'[object Object]' : 'object',
'[object Error]' : 'error'
};
function type( obj ) {
if ( obj == null ) {
return obj + "";
}
return typeof obj === "object" || typeof obj === "function" ?
class2type[ toString.call(obj) ] || "object" :
typeof obj;
};
console.log(typeof null);
console.log(class2type[ toString.call(null) ] );
console.log(type(null));
console.log(typeof undefined);
console.log(class2type[ toString.call(undefined) ] );
console.log(type(undefined));
</script>
</body>
</html>
object type.html:26
undefined type.html:27
null type.html:28
undefined type.html:29
undefined type.html:30
undefined