javascript中判断对象类型

 1 <script type="text/javascript">
 2         
 3         
 4         //判别一个对象属性在不在某个对象中
 5         //in 是用于查找某个属性是否存在于对象中,它会把对象
 6         //里面所有的内置方法全部返回
 7         
 8         var json = {username:"pipi"};
 9         console.log("username" in json);  //true
10         console.log("toString" in json);  //true
11         console.log("valueOf" in json);  //true
12         console.log(json.constructor);  //function Object();区分对象具体类型
13         
14         console.log("=====================");
15         var date = new Date();
16         var arr = [];
17         var obj = {};
18         var regex = new RegExp();
19         
20         console.log(date.constructor);  //function Date()
21         console.log(arr.constructor);  //function Array()
22         console.log(obj.constructor);  //function Object()
23         console.log(regex.constructor);  //function RegExp()
24         
25         /*
26             判断是否为数组
27         */
28         function isArray(obj){
29             if(obj && typeof obj === "object"){
30                 var con = obj.constructor.toString();
31                 return con.indexOf("Array") != -1 ? true : false;
32             }
33             return false;
34         }
35         
36         function isArray1(obj){
37             return typeof obj.sort === "function";
38         }
39         
40         function isArray2(obj){
41             return obj != null && typeof obj === "object" && "splice" in obj && "join" in obj && "length" in obj;
42         }
43         
44         function isArray3(obj){
45             return obj instanceof Array;
46         }
47         
48         //ES5中提供的方法 IE678可能不支持
49         console.log(Array.isArray(arr)); //true
50         //自己定义
51         //prototype当做对象的方法动态扩展
52         Array.prototype.isArray = function(){
53             return this instanceof Array;
54         }
55         
56         
57         console.log(isArray(arr));  //true
58         console.log(isArray1(arr));  //true
59         console.log(isArray2(arr));  //true
60         console.log(isArray3(arr));  //true
61         
62         //判断是否为数字
63         function isNumber(obj){
64             var num = new Number(obj);
65             return typeof obj === "number" && !("isNaN" in num);
66         }
67         
68         //判断是否为空
69         function isNull(obj){
70             return obj === null;
71         }
72         
73         //判断是否为undefined
74         function isUndefined(obj){
75             return obj === 0;
76         }
77         
78         //判断是不是一个日期类型
79         function isDate(obj){
80             if(obj && typeof obj === "object"){
81                 var con = obj.constructor.toString();
82                 return con.indexOf("Date") != -1 ? true :false;
83             }
84             return false;
85         }
86         
87         console.log(isDate(date));
88         
89
/*
        prototype是js为每一个对象提供的原型链
        用于对象的动态扩展
    */
    Array.prototype.isArray = function(){
        return this instanceof Array;
    }
    
    String.prototype.startWith = function(key){
        return this.charAt(0) == key;
    }
    
    String.prototype.endWith = function(key){
        return this.charAt(this.length - 1) == key;
    }

 

90         
91     </script>

 

posted @ 2015-10-01 20:54  悬崖边上  阅读(256)  评论(0编辑  收藏  举报