JavaScript类型检测(常用三种实例分析)

考虑类型检测,首先我们先巩固一下JS的六种数据类型:

1)原始类型:number、string、boolean、undefined、null  (五种)

2)对象:object( Function、Array、Date...)

类型检测包括:typeof  instanceof

typeof  (适合基本类型和函数,遇到null失效)

var Circle=function(){  
   
   var obj=new Object();
   obj.PI=3.14159,  
   obj.area = function( r ) {  
       return this.PI * r * r;  
   }  
   return obj;  
};  
console.log(typeof 100);
console.log(typeof true);
console.log(typeof Circle);
console.log(typeof undefined);
console.log(typeof new Object()); 
console.log(typeof [1 ,3]); //对于引用类型数组等都是返回object
console.log(typeof NaN);  //特殊的number
console.log(typeof null);  //返回的object,是历史原因造成的,为了兼容性
number
boolean
function
undefined
object
object
number
object

instanceof判断自定义的对象,但是需要注意:不同的window或iframe间的对象类型检测不能使用instanceof,使用typeof可以跨帧使用。

console.log([1,3] instanceof Array );  //true
console.log(new Object() instanceof Array ); //false

Object.prototype.toString.apply( 检测对象 ) 

console.log(Object.prototype.toString.apply( [] ) ); 
console.log(Object.prototype.toString.apply( Circle) ); 
console.log(Object.prototype.toString.apply( null) ); 
console.log(Object.prototype.toString.apply( undefined) ); 
[object Array]
[object Function]
[object Null]
[object Undefined]

通过{}.toString拿到的类型检测适合内置对象和基元类型。

除了上面三种,还有construtor和duck type两种。




猜你喜欢

转载自blog.csdn.net/weixin_30363263/article/details/81003671