位置: 编程技术 - 正文

javascript中怎么做对象的类型判断(javascript中怎么创建一个数组)

编辑:rootadmin

最近在翻看John Resig的大作《Pro JavaScript Techniques》,里面讲到了如何做javascript的类型判断的问题。文中介绍了两种方式,一种是使用typeof,另一种是使用constructor。略感遗憾的是作为jquery的作者,他尽然没有介绍jquery使用的类型判断方式。不过没有关系,我在这里给大家一起总结下。

在这里我首先像大家推荐一个很好用的在线编辑器:

typeof是我们在做类型判断时最常用的方法,他的优点就是简单、好记,缺点是不能很好的判断object、null、array、regexp和自定义对象。

下面是我的测试代码:代码运行结果:

2.constructor

现在介绍一种不常使用的方法,对象构造器constructor。他的优点是支持大部分对象类型的判断,特别是对自定义对象的判断;缺点是不能在null和undefined上使用。

测试代码和之前的差不多,区别就是使用XXX.constructor代替了typeof。

运行结果:

运行到 console.log(nullObj.constructor); 的时候,浏览器报错:Uncaught TypeError: Cannot read property 'constructor' of null。类似的问题也发生在console.log(undefinedObj.constructor); 上面:Uncaught TypeError: Cannot read property 'constructor' of undefined。

3.Object.prototype.toString.call()

最后要介绍的是jquery中使用的方式,Object.prototype.toString.call()。优点是支持绝大多数类型的判断,唯一的缺点是不支持自定义对象的判断。

测试代码如下:

运行结果:

console.log(toString.call(user)); 的返回结果为:[object Object],不能做进一步判断。

总结

javascript中经常使用的对象判断方式包括:typeof、constructor和Object.prototype.toString.call()。其中typeof很好理解,他是JavaScript本身支持的语法。constructor很少使用,但是相信大家通过demo也能看懂他代表的意思。至于Object.prototype.toString.call()可能多少会让人有点费解,他和XXX.toString()有什么区别呢,为什么不能直接使用XXX.toString()呢?

我们在浏览器中运行下面的代码:查看运行结果:

null和undefined因为不存在toString()方法,所以会报错,我们就不去管他们了。至于其他对象,通过toString()返回的内容和使用Object.prototype.toString.call()返回的内容差别很大。这是因为Object.prototype.toString()方法被设计用来返回对象类型的。String、Array、Boolean、Regexp、Number和Function都继承自Object,同时也就继承了Object的原型方法toString(),但是他们都对toString()进行了重写。执行xxx.toString()时使用的是重写后的方法,返回的结果自然会和Object.prototype.toString.call()的结果不一致。

通过上面的例子,大家一定对这三种方式有了更深刻的认识,熟悉他们的优缺点,然后可以根据自己的需要选择合适的方式。推荐使用Object.prototype.toString.call()方法,因为他能解决绝大部分情况的判断,在遇到返回值为[object Object]时,再使用constructor辅助判断,看是否是自定义对象。

推荐整理分享javascript中怎么做对象的类型判断(javascript中怎么创建一个数组),希望有所帮助,仅作参考,欢迎阅读内容。

javascript中怎么做对象的类型判断(javascript中怎么创建一个数组)

文章相关热门搜索词:javascript中怎么创建一个数组,javascript怎么写,javascript chm,javascriptj,javascriptj,javascript如何,javascript中怎么创建一个数组,javascript如何,内容如对您有帮助,希望把文章链接给更多的朋友!

JavaScript中判断对象类型的几种方法总结 我们知道,JavaScript中检测对象类型的运算符有:typeof、instanceof,还有对象的constructor属性:1)typeof运算符typeof是一元运算符,返回结果是一个说明运算

JavaScript splice()方法详解 定义和用法splice()方法用于插入、删除或替换数组的元素。语法arrayObject.splice(index,howmany,element1,.....,elementX)参数描述index必需。规定从何处添加/删除元素

js hover 定时器(实例代码) $("#showComptr:not('.stlisttitle')").hover(function(){try{if($("#calendarPanel").is(":visible"))$(".playerlist").hide();else{clearTimeout(timMess);$(".playerlist").css("top",$(this).offset().top-$(".c

标签: javascript中怎么创建一个数组

本文链接地址:https://www.jiuchutong.com/biancheng/373637.html 转载请保留说明!

上一篇:JavaScript对内存分配及管理机制详细解析(js 对象内存 占用)

下一篇:JavaScript中判断对象类型的几种方法总结(javascript中的判断语句)

  • 小规模企业需要交哪些税
  • 增值税预缴申报和正常申报的区别
  • 总公司签合同发票由分公司开可以吗
  • 个税申报缴费
  • 销售货物代垫的运费发生的增值税
  • 环保专项资金可以转让吗
  • 出售股权账务处理
  • 公司转让注册资金怎么弄
  • 购货无法取得发票财务如何处理
  • 进口报关手续费
  • 收到基金计入什么科目
  • 注册个人独资企业和有限公司哪个好
  • 个人去税务局开劳务费税率
  • 国税注销了地税没注销现在经营异常
  • 餐饮发票增值税税率是多少
  • 代开的专票开错了怎么办?
  • 什么情况下一般疑问句用do
  • 现金流量表右边
  • 用友填制凭证外币科目没弹出
  • 小规模纳税人少计提的工资怎么办
  • 分公司独立核算和非独立核算有什么区别
  • 公司的汽车购置税怎么交
  • 预计产品质量保证损失是什么意思
  • 两万元大写金额报销单怎么写
  • 预付租金是什么
  • 计提社保公司承担部分怎么算
  • 汽车零部件的成本核算
  • 华为mate50耳机孔和充电口一样吗
  • 人工装卸怎么办营业执照
  • 红字增值税专用发票是什么
  • 系统搜索力
  • 采购物资发生什么费用
  • 农产品进项税额转出怎么算
  • 酒店装修期间的费用如何核算
  • 来料加工怎么核算成本
  • nginx加php
  • php字符串包含某个字符串
  • 目标检测算法的主要目的是找到图像中用户感兴趣的
  • 税务局关于免税资格的审核认定
  • 融资租入固定资产是什么意思
  • 皮丘拉湖畔的乌代布尔城市宫殿,印度 (© Chaiyun Damkaew/Getty Images)
  • 补计提去年所得税费用会计分录
  • 账本过次页的视频
  • 包装物逾期是什么意思
  • 终于见识到什么叫云横秦岭了
  • 固定资产减值准备计入什么科目
  • 图书为什么不能退货
  • mysql默认存储引擎的命令
  • python如何建立函数
  • sqlserver233报错原因
  • 无形资产摊销完以后得账务处理
  • 暂估入库的商品作暂估冲红会计分录
  • 出口退税申报系统汇率修改
  • 简易计税项目税率
  • 申报残保金的时候有处罚决定书怎么办
  • 盘亏盘盈的会计处理
  • 持有至到期投资减值准备
  • 拆迁补偿怎么算的
  • 主营业务成本带二级科目吗
  • 企业如何设置预缴税款
  • 开票和不开票
  • 出租人融资租赁的判断标准
  • 台式电脑二级网页打不开怎么办
  • 搭建docker私有仓库实验报告
  • 在windows中打开一个窗口后
  • centos强制关闭程序
  • win10预览版绿屏重启解决
  • windows账户升级为管理员
  • win7系统和win8系统哪个好用
  • nodejs oom
  • 用dos杀毒的一个软件
  • 第一次接触怎么形容
  • 网络游戏数据包
  • jquery 图片裁剪
  • 农业栽培技术
  • 非税收入纳入一般公共预算管理
  • Excel表格如何导出
  • 最新专票税率几个档
  • 生育登记网上服务大厅山东
  • 耕地占用税免税项目需要计入计税依据吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设