javascript深入理解系列文章网址
https://www.jianshu.com/p/451eed9094f5
1.typeof(能判断6种类型)
typeof其实就是判断参数是什么类型的实例,就一个参数
typeof 一般只能返回如下几个结果(一共六个):
"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。(这些值都是小写)
(温馨提示:此处要和js的数据类型区别开)
js的简单数据类型:string,number,boolean,null,undefined
js的复杂数据类型:object
运算数为数字 typeof(x) = "number"
字符串 typeof(x) = "string"
布尔值 typeof(x) = "boolean"
特别注意**对象,数组和null typeof(x) = "object"**(因为null和数组都属于对象)
函数 typeof(x) = "function"
2.instanceof
要知道使用typeof判断array,null都会返回"object",所以这个时候可以使用instanceof判断
instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。(直白点说就是判断左边的值是否是右边对象的实例)
例如:var a=[1,2];
a instanceof Array则为true
因为console.log(a.__proto__===Array.prototype);为true所以上面为true
其实也就是判定a是Array的实例
3.Object.prototype.toString.call(value)(至少14中类型)
1.判断基本类型:(输出的值是字符串,并且用中括号括起来,左边是object(小写),右边是类型(首字母大写))
Object.prototype.toString.call(null);//”[object Null]”
Object.prototype.toString.call(undefined);//”[object Undefined]”
Object.prototype.toString.call(“abc”);//”[object String]”
Object.prototype.toString.call(123);//”[object Number]”
Object.prototype.toString.call(true);//”[object Boolean]”
2.判断原生引用类型:
函数类型
Function fn(){console.log(“test”);}
Object.prototype.toString.call(fn);//”[object Function]”
日期类型
var date = new Date();
Object.prototype.toString.call(date);//”[object Date]”
数组类型
var arr = [1,2,3];
Object.prototype.toString.call(arr);//”[object Array]”
正则表达式
var reg = /[hbc]at/gi;
Object.prototype.toString.call(arr);//”[object Array]”
自定义类型
function Person(name, age) {
this.name = name;
this.age = age;
}
var person = new Person("Rose", 18);
Object.prototype.toString.call(arr); //”[object Object]”
**很明显这种方法不能准确判断person是Person类的实例,而只能用instanceof 操作符来进行判断,如下所示:
console.log(person instanceof Person);//输出结果为true**
3.判断原生JSON对象:
var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON);
console.log(isNativeJSON);//输出结果为”[object JSON]”说明JSON是原生的,否则不是;
注意:Object.prototype.toString()本身是允许被修改的,而我们目前所讨论的关于Object.prototype.toString()这个方法的应用都是假设toString()方法未被修改为前提的。
参考:http://www.zhufengpeixun.cn/JavaScriptmianshiti/2014-02-28/271.html
网友评论