1,真正的数组的判断方法
javascript中最简单的声明数组方法为:
var a = [];
判断是否为数组的最直接的方法为:
复制代码 代码如下:
a instanceof Array //true
a .constructor == Array //true
这里涉及到一个instanceof语法,instanceof是一个云算符,与"+-*/"一样,它的语法如下:
result = obj intanceof class
是用来判断一个对象是否是某个class的一个实例,运算结果返回true或者false。javascript中class的定义又是通过构造函数进行初始化的,所以instanceof语法的右操作符class一定是Function的实例,即class instanceof Function一定为true,而且如果使用instanceof时右操作符不是Function,就会抛出TypeError异常。所有对象都是Object的实例,所以任何对象instanceof Object都返回true。虽然我们说对象都是通过构造函数进行初始化的,但是instanceof却不是通过检查对象是否由该函数构造的,而是通过是否由构造函数的prototype继承来的,下面这个例子可以说明这个问题:
复制代码 代码如下:
function Range(low, high) {
this.low = low;
this.high = high;
}
Range.prototype.constructor == Range; //true
Range.prototype = {
include: function(x){ return (x >= this.low && x <= this.high); },
exclude: function(x){ return (x < this.low && x > this.high); }
}
var r = new Range(0, 100);
r instanceof Range; //false
r instanceof Object; //true
Range.prototype.constructor == Objecct; //true
这里虽然r是通过new Range构造的,但是r却并不是Range的实例,这就是问题所在,Range.prototype赋值语句覆盖了默认的构造函数,没对prototype赋值之前Range.prototype.constructor为Range,赋值之后变成了Object,这也好理解,因为
复制代码 代码如下:
Range.prototype = {
include: function(x){ return (x >= this.low && x <= this.high); },
exclude: function(x){ return (x < this.low && x > this.high); }
}
其实等价于:
复制代码 代码如下:
Range.prototype = new Object({
include: function(x){ return (x >= this.low && x <= this.high); },
exclude: function(x){ return (x < this.low && x > this.high); }
});
所以Range.prototype.constructor == Object,那么通过new Range创建出来的实例当然就是Object的一个实例了。
看官方解释更直接些:
The instanceof operator does not actually check whether r was initialized by the Range constructor. It checks whether it inherits from Range.prototype.
javascript中还有一个函数typeof具有与instanceof类似的功能,但是它返回的是具体的基本数据类型:number,string,function,object,undefined,boolean,只有这六种,不在这六种范围内的都返回object,也就是说typeof([])返回的是object,而不是array。
另一个涉及到的语法是constructor,constructor返回对象的构造函数:
复制代码 代码如下:
var a = [];
a.constructor; //Array
构造函数是一个对象的初始化函数,采用new调用,如果对象是一个Array,那么其constructor应该就是Array,自己写的类就不一定了,因为可能会吧prototype中的constructor更改掉。
2,伪数组的判断方法
javascript中有一种伪数组,它可以使用类似于Array的遍历方法进行遍历,有length属性获取元素的长度,可以使用[]下标来获取指定的元素,这种对象我们称之为伪数组,JQuery中的对象就是典型的伪数组,如下图:
所以判断是否是伪数组的关键就是判断是否有length属性,是否存在基本的数组操作函数splice,下面就是判断方法:
复制代码 代码如下:
var is_array = function(value) {
return value &&
typeof value === 'object' &&
typeof value.length === 'number' &&
typeof value.splice === 'function' &&
!(value.propertyIsEnumerable('length'));
};
这里propertyIsEnumerable就是用来判断length属性是否可列举,其实原生的String对象也是有类似Array的效果,但是我们不能把它当作Array对象,所以这里需要判断typeof value == "object",因为typeof一个String对象,返回的是string。
相关推荐:
ChatGPT付款银行卡被拒绝?解决方案全解析!,小发猫ai智能写作查重能过吗
SEO词的魔力:如何通过关键词优化打破流量瓶颈,免费网站建设高端
SEO需要什么语音,seo需要考虑什么 ,学生作业ai
好用的AI写作工具,提升写作效率与创意的最佳选择
颠覆写作方式:免费的AI续写软件助你轻松创作
ChatGPT最近不好用了?了解这些背后的原因与解决方案,ai sketcher
SEO元素-提升网站排名的核心要素,推广分成网站有哪些
seo链接有什么用,seo外链是什么意思 ,one ai写作
SEO优化要钱吗?揭秘SEO投资背后的价值与回报,ai领域
什么是seo网站推广,什么是seo网站推广 ,ai酷男人
seo辅助词选什么,seo助手 ,各车企ai
seo深度优化插件是什么,深度优化手机软件 ,ai的缩写
seo链接锚是什么,什么是锚链接,如何设置锚链接 ,保山智能AI
seo用什么写属性写,seo属于什么 ,芭田科学施肥AI
为什么“360收录”是你网站推广的必备利器,seo亚马逊
怎么识别是AI写的文章
ChatGPT与讯飞:AI语音与智能对话的完美融合,ai直角变圆角
SEO优化做什么的?揭秘SEO优化的核心价值与实战应用,ai做金色
优化分析:提升企业效益的关键策略,山东大网站建设
seo要学什么技术,seo要学什么技术好 ,ai.fale
seo网络推广要做什么,seo 网络推广 ,ai少女喝药
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
什么是seo方法,何为seo ,ai写作神器源码是什么
AI免费生成文章让创作变得轻松自如
SEO专业怎么样?未来发展的无限潜力与职业前景,联通ai智能早教
2024年AI写文章生成器推荐:让创作轻松高效,提升写作水平
AI批量文章工具,让写作变得高效与轻松,cs机器人ai
AI缩短短文-提升创作效率,写作新体验,光速写作业ai写作app
优化页面-提升用户体验与搜索引擎排名的关键,绍兴视频营销推广
中国AI软实力崛起:技术创新与产业应用的完美融合,seo0066
什么是蜘蛛弛?揭秘这个SEO优化背后的神秘工具,南沙seo优化排名价格
SEO自行:提升网站流量的秘密武器,邹平县个人网站建设建议
AI翻译工具的革命-ChatGPT等技术让语言互通无碍,淘宝ai写作检测准吗
打造内容创作新时代:有言AI生成助力创作者释放灵感
seo网站关键字排名优化,网站seo关键词 ,运动ai
ChatGPT怎么打不开了?揭秘背后的原因与解决方法,ai中打开ai文件丢失
优化工具:提升工作效率的秘密武器,网站模板的优化策略是什么
洗文章AI:让内容创作变得更智能、更高效
seo都有什么意思,seo 啥意思 ,ai园林
文章去AI回归创作的本真之美
SEO抓取:让您的网站从零到一的秘诀,佛山网站建设哪家效果好
AI会生成同一篇文章吗?揭开智能创作的神秘面纱
seo网站页面优化包括什么,seo页面优化技术 ,no ai写作
优化,让生活与工作更高效-从个人到企业的全面升级,广州百度seo费用
SEO自从上线后的演变与未来发展趋势,拼多多增加关键词排名
ChatGPT为什么页面下拉不了?问题解析与解决方案,ai对准
怎么用AI写出令人惊叹的文章?轻松搞定写作难题!
ChatGPT一经发布,便受到了用户的狂热追捧,引爆人工智能热潮,十代ai达人办公本
ChatGPT登录503错误?轻松解决,快速恢复畅享智能体验!,ai怎么加植物材质效果
SEO快速排名实例:如何通过实战技巧提升网站排名,快速突破流量瓶颈,安徽ai跑步机企业