javascript代码实例教程-javascript typeof instanceof

发布时间:2018-12-31 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-javascript typeof instanceof脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

tyPEof和instanceof的区别

typeof和instanceof都可以用来判断变量,它们的用法有很大区别:

typeof会返回一个变量的基本类型,只有以下几种:number,boolean,string,object,undefined,function;如果我们想要判断一个变量是否存在,可以使用typeof:(不能使用if(a) 若a未声明,则报错)

instanceof返回的是一个布尔值,如:

VAR a = {};

alert(a instanceof Object); //true

var b = [];

alert(b instanceof Array); //true

需要注意的是,instanceof只能用来判断对象和函数,不能用来判断字符串和数字等,如:

var b = '123';

alert(b instanceof String); //false

alert(typeof b); //string

var c = new String("123");

alert(c instanceof String); //true

alert(typeof c); //object

另外,用instanceof可以判断变量是否为数组

 

大家都知道js中可以使用typeof来判断变量的基本类型,如:

alert(typeof '111'); // "string"

alert(typeof 22); // "number"

alert(typeof a); // "undefined"

alert(typeof undefined); // "undefined"

alert(typeof []); // "object"

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

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

1、constructor属性

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

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

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

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

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

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

2、instanceof

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

 

var arr = [1,2,3];

alert(arr instanceof Array); // true

 

最后,为了给大家一个结果,现写出一个终极解决方案

判断数组终极解决方案

var arr = [1,2,3];

function isArrayFn(obj){ //封装一个函数

if (typeof Array.isArray === "function") {

return Array.isArray(obj); //浏览器支持则使用isArray()方法

}else{ //否则使用toString方法

return Object.prototype.toString.call(obj) === "[object Array]";

}

}

alert(isArrayFn(arr));// true

觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的javascript代码实例教程-javascript typeof instanceof全部内容,希望文章能够帮你解决javascript代码实例教程-javascript typeof instanceof所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。