web开发中怎样检测属性

这次给大家带来web开发中怎样检测属性,web开发中检测属性的注意事项有哪些,下面就是实战案例,一起来看一下。

用到null(以及undefined)的场景是当检测一个属性是否在对象中存在时,比如:

// 不好的写法:检测假值if (object[propertyName]) {}// 不好的写法:和null相比较if (object[propertyName] != null) {}// 不好的写法:和undefined比较if (object[propertyName] != undefined) {}

登录后复制

上面这段代码里的每个判断,实际上是通过给定的名字来检査属性的值,而非判断给定的名字所指的属性是否存在,因为当属性值为假值(falsy value)时结果会出错,比如0、””(空字符串)、 false、null和undefined。毕竟,这些都是属性的合法值。比如,如果属性记录了一个数字,则这个值可以是零。这样的话,上段代码中的第一个判断就会导致错误。以此类推,如果属性值为null或者undefined时,三个判断都会导致错误。

判断属性是否存在的最好的方法是使用in运算符。in运算符仅仅会简单地判断属性是否存在,而不会去读属性的值,这样就可以避免出现本小节中前文提到的有歧义的语句。 如果实例对象的属性存在、或者继承自对象的原型,in运算符都会返回true。比如:

var object = {  count: 0,  related: null};// 好的写法if ("count" in object) {  // 这里的代码会执行}// 不好的写法:检测假值if (object["count"]) {  // 这里的代码不会执行}// 好的写法if ("related" in object) {  // 这里的代码会执行}// 好的写法if (object["related"] != null) {  // 这里的代码不会执行}

登录后复制

如果你只想检查实例对象的某个属性是否存在,则使用hasOwnProperty()方法。所有继承自Object的JS对象都有这个方法,如果实例中存在这个属性则返回true(如果这个属属性只存在于原型里,则返回false)。需要注意的是,在IE8以及更早版本的IE中,DOM对象并非继承自Object,因此也不包含这个方法。也就是说,你在调用DOM对象的 hasOwnProperty()方法之前应当先检测其是否存在(假如你已经知道对象不是DOM,则可以省略这一步)。

// 对于所有非DOM对象来说,这是好的写法if (object.hasOwnProperty("related")) {  // 执行这里的代码}// 如果你不确定是否为DOM对象,则这样来写if ("hasOwnProperty" in object && object.hasOwnProperty("related")) {  // 执行这里的代码}

登录后复制

因为存在IE8以及更早版本IE的情形,在判断实例对象的属性是否存在时,我更倾向于使用in运算符,只有在需要判断实例属性时才会用到hasOwnProperty()。不管你什么时候需要检测属性的存在性,请使用in运算符或者hasOwnProperty()。这样做可以避免很多bug。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

web开发中如何避免空比较

web开发中怎样检测数组

以上就是web开发中怎样检测属性的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2750181.html

(0)
上一篇 2025年3月8日 05:32:26
下一篇 2025年2月22日 22:21:38

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS中特性与UA检测

    这次给大家带来JS中特性与UA检测,JS中特性与UA检测的注意事项有哪些,下面就是实战案例,一起来看一下。 最早的浏览器嗅探即用户代理(user-agent)检测,服务端(以及后来的客户端)根据user-agent字符串来确定浏览器的类型。…

    编程技术 2025年3月8日
    200
  • 如何访问JS的对象属性与方法

    这次给大家带来如何访问JS的对象属性与方法,访问JS对象属性与方法的注意事项有哪些,下面就是实战案例,一起来看一下。 定义一个对象,然后用点运算符(.)来访问属性和方法。今天突然看见还有另外一种方法中括号运算符([]),就认真看了下。 va…

    2025年3月8日 编程技术
    200
  • 在react-native中通过WebView处理返回非回调方法

    这篇文章主要介绍了详解react-native webview 返回处理(非回调方法可解决),现在分享给大家,也给大家做个参考。 1.前言 项目中有些页面内容是变更比较频繁的,这些页面我们会考虑用 网页 来解决。 在RN项目中提供一个公用的…

    2025年3月8日 编程技术
    200
  • 在Vue中如何实现web分页组件

    这篇文章主要为大家详细介绍了vue实现web分页组件的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Vue实现web分页组件的具体代码,供大家参考,具体内容如下 效果演示 源代码 nbsp;html>…

    2025年3月8日
    200
  • 如何利用iview的Table组件实现将表格的列合并

    本篇文章给大家带来的内容是关于如何利用iview的table组件实现将表格的列合并,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 iview的Table组件表头分组 iview的Table组件表头分组 需求说明 合并表头 …

    2025年3月8日
    200
  • Nodejs对web开发你知道多少?一篇文章让你了解nodejs开发web

    这篇文章让我们了解nodejs对web开发的过程,你想知道的都在这里,由服务器动态生成html页面。下面就让我们来看这篇文章吧。 一 ,Node.js 和 PHP、 Perl、ASP、JSP 目的都是实现动动态网页,也就是说由服务器动动态生…

    2025年3月8日
    200
  • JSON实现七行代码让网站变移动应用

    本篇文章介绍了借助 Jasonette 将 Web 视图和原生组件融合构建真正“混合”应用的做法,让你的网站变成移动应用。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助。 如果我告诉你,只需要 上述 7 行橙色的 json …

    2025年3月8日 编程技术
    200
  • Props属性如何设置

    Props(属性) 是组件自身的属性,props中的属性与组件属性一一对应。负责传递信息 1、父组件向子组件传递数据 //定义webName组件,负责输出名字var webName = React.createClass({  render…

    2025年3月8日
    200
  • Web学习之怎么使用纹理贴图

    为了使图形能获得接近于真实物体的材质效果,一般会使用贴图,贴图类型主要包括两种:漫反射贴图和镜面高光贴图。其中漫反射贴图可以同时实现漫反射光和环境光的效果。实际效果请看demo:纹理贴图 2D纹理 实现贴图就需要用到纹理,常用的纹理格式有:…

    2025年3月8日
    200
  • web前端js是什么

    js是JavaScript的简称,是一种直译式脚本语言,它是web前端中不可缺少的一部分,它用于增强HTML页面,通常可以嵌入HTML代码中,JavaScript以交互式和动态的方式呈现网页,这允许页面对事件做出反应,展示特殊效果。 JS是…

    2025年3月8日
    200

发表回复

登录后才能评论