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>