web开发中怎样检测引用值

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

引用值也称作对象(object)。在JS中除了原始值之外的值都是引用。有这样几种内置的引用类型:Object、Array、Date和Error,数量不多。typeof运算符在判断这些引用类型时显得力不从心,因为所有对象都会返回”object”。

typeof另外一种不推荐的用法是当检测null的类型时,typeof运算符用于null时将全返回”object”。这看上去很怪异,被认为是标准规范的严重bug,因此在编程时要杜绝使用typeof来检测null的类型。

检测某个引用值的类型的最好方法是使用instanceof运算符。instanceof的基本语法是:value instanceof constructor。

instanceof的一个有意思的特性是它不仅检测构造这个对象的构造器,还检测原型链。原型链包含了很多信息,包括定义对象所采用的继承模式。比如,默认情况下,每个对象都继承自Object,因此每个对象的value instanceof Object都会返回true。因为这个原因,使用value instanceof Object来判断对象是否属于某个特定类型的做法并非最佳。

instanceof运算符也可以检测自定义的类型,比如:

function Person (name) {  this.name = name;}var me = new Person('Nicholas');console.log(me instanceof Object); // trueconsole.log(me instanceof Person); // true

登录后复制

在JS中检测自定义类型时,最好的做法就是使用instanceof运算符,这也是唯一的方法。同样对于内置JS类型也是如此(使用instanceof运算符)。但是,有一个严重的限制。

假设一个浏览器帧(frameA)里的一个对象被传入到另一个帧(frameB)中。两个帧里都定义了构造函数Person。如果来自帧A的对象是帧A的Person的实例,则如下规则成立。

frameAPersonInstance instanceof frameAPerson; // trueframeAPersonInstance instanceof frameBPerson; // false

登录后复制

因为每个帧(frame)都拥有Person的一份拷贝,它被认为是该帧(frame)中的Person的拷贝实例,尽管两个定义可能完全一样的。这个问题不仅出现在自定义类型身上,其他两个非常重要的内置类型也有这个问题:函数和数组。对于这两个类型来说,一般用不着使用instanceof。

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

推荐阅读:

web开发中怎样检测原始值

怎样利用JS做出引用传递与值传递

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

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

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

(0)
上一篇 2025年3月8日 05:32:43
下一篇 2025年2月23日 04:58:29

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

相关推荐

  • web开发中怎样检测函数

    这次给大家带来web开发中怎样检测函数,web开发中检测函数的注意事项有哪些,下面就是实战案例,一起来看一下。 从技术上讲,JS中的函数是引用类型,同样存在Function构造函数,每个函数都是其实例,比如: function myFunc…

    编程技术 2025年3月8日
    200
  • web开发中怎样检测数组

    这次给大家带来web开发中怎样检测数组,web开发中检测数组的注意事项有哪些,下面就是实战案例,一起来看一下。 JS中最古老的跨域问题之一就是在帧(frame)之间来回传递数组。开发者很快发现instanceof Array在此场景中不总是…

    编程技术 2025年3月8日
    200
  • web开发中怎样检测属性

    这次给大家带来web开发中怎样检测属性,web开发中检测属性的注意事项有哪些,下面就是实战案例,一起来看一下。 用到null(以及undefined)的场景是当检测一个属性是否在对象中存在时,比如: // 不好的写法:检测假值if (obj…

    编程技术 2025年3月8日
    200
  • JS中特性与UA检测

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

    编程技术 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
  • Web学习之怎么使用纹理贴图

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

    2025年3月8日
    200

发表回复

登录后才能评论