typeof,instanceof

1.typeof操作符

返回一个字符串表示未鉴定的操作数的类型。

只有以下几种number,boolean,string,object,undefined,function;

dome1:

NULL:

typeof null === 'object' ;

NUMBER:

typeof 3.14==='number';

typeof(42)==='number';

OBJECT:

typeof [1,2,4]==='object';

typeof  newDate()==='object';

Functions:

typeof function(){}==='function';

typeof Math.sin==='function';

(1)如果我们想要判断一个变量是否存在,可以使用typeof:(不能使用if(a) 若a未声明,则报错)

if(typeof a != 'undefined'){

//变量存在

}

(2)但是这个方法不适用于来判断数组,因为不管是数组还是对象,都会返回object,这就需要我们需求其他的方法。

有几种方法可以拿来判断:

constructor属性

这个属性在我们使用js系统或者自己创建的对象的时候,会默认的加上,例如:

var arr = [1,2,3];  //创建一个数组对象

arr.prototype.constructor = Array;  //这一句是系统默认加上的

所以我们就可以这样来判断:

var arr = [1,2,3,1];

alert(arr.constructor === Array);   // true

instanceof

instanceof是检测对象的原型链是否指向构造函数的prototype对象的,所以我们也可以用它来判断:

var arr = [1,2,3];

alert(arr instanceof Array);   // true

2.instanceof

instanceof用于判断一个变量是否某个对象的实例,返回的是一个布尔值,

eg:

var a=new Array();

alert(a instanceof Array);

会返回true,

alert(a instanceof Object)也会返回true;这是因为Array是object的子类。

function test(){};var a=new test();alert(a instanceof test)会返回true。

3.JS里面String的初始化有两种方式:直接赋值和String对象的实例化

var str = "abc";

var str = new String("abc");

通常来说判断一个对象的类型使用typeof,但是在new String的情况下的结果会是object

此时需要通过instanceof来判断

你可能感兴趣的:(typeof,instanceof)