外贸视频网站,网站开发项目详细计划,有人利用婚恋网站做微商,花生壳做wordpress原文地址#xff1a;如何判断js中的数据类型作者#xff1a;最初的你如何判断js中的数据类型#xff1a;typeof、instanceof、 constructor、 prototype方法比较 如何判断js中的类型呢#xff0c;先举几个例子#xff1a; var a iamstring.; var b 222; var… 原文地址如何判断js中的数据类型作者最初的你 如何判断js中的数据类型typeof、instanceof、 constructor、 prototype方法比较 如何判断js中的类型呢先举几个例子 var a iamstring.; var b 222; var c [1,2,3]; var d new Date(); var e function(){alert(111);}; var f function(){this.name22;}; 最常见的判断方法typeof alert(typeof a) ------------ string alert(typeof b) ------------ number alert(typeof c) ------------ object alert(typeof d) ------------ object alert(typeof e) ------------ function alert(typeof f) ------------ function 其中typeof返回的类型都是字符串形式需注意例如 alert(typeof a string) ------------- true alert(typeof a String) --------------- false 另外typeof 可以判断function的类型在判断除Object类型的对象时比较方便。 判断已知对象类型的方法 instanceof alert(c instanceof Array) --------------- true alert(d instanceof Date) alert(f instanceof Function) ------------ true alert(f instanceof function) ------------ false 注意instanceof 后面一定要是对象类型并且大小写不能错该方法适合一些条件选择或分支。 根据对象的constructor判断 constructor alert(c.constructor Array) ---------- true alert(d.constructor Date) ----------- true alert(e.constructor Function) ------- true 注意 constructor 在类继承时会出错 eg, function A(){}; function B(){}; A.prototype new B(); //A继承自B var aObj new A(); alert(aobj.constructor B) ----------- true; alert(aobj.constructor A) ----------- false; 而instanceof方法不会出现该问题对象直接继承和间接继承的都会报true alert(aobj instanceof B) ---------------- true; alert(aobj instanceof B) ---------------- true; 言归正传解决construtor的问题通常是让对象的constructor手动指向自己 aobj.constructor A; //将自己的类赋值给对象的constructor属性 alert(aobj.constructor A) ----------- true; alert(aobj.constructor B) ----------- false; //基类不会报true了; 通用但很繁琐的方法 prototype alert(Object.prototype.toString.call(a) ‘[object String]’) ------- true; alert(Object.prototype.toString.call(b) ‘[object Number]’) ------- true; alert(Object.prototype.toString.call(c) ‘[object Array]’) ------- true; alert(Object.prototype.toString.call(d) ‘[object Date]’) ------- true; alert(Object.prototype.toString.call(e) ‘[object Function]’) ------- true; alert(Object.prototype.toString.call(f) ‘[object Function]’) ------- true; 大小写不能写错比较麻烦但胜在通用。 通常情况下用typeof 判断就可以了遇到预知Object类型的情况可以选用instanceof或constructor方法简单总结下挖个坑欢迎补充 转载于:https://www.cnblogs.com/linewman/p/9918836.html