返回顶部
首页 > 资讯 > 精选 >怎么判断JavaScript中对象的类型
  • 806
分享到

怎么判断JavaScript中对象的类型

2023-07-04 10:07:57 806人浏览 泡泡鱼
摘要

这篇“怎么判断javascript中对象的类型”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么判断JavaScript中对

这篇“怎么判断javascript中对象的类型”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么判断JavaScript中对象的类型”文章吧。


首先可能会想到typeof操作符,看下面的这个例子:

 <script type="text/javascript"> var object = {}; var b = true; alert(typeof object + " " + typeof b);  </script>

得到的结果如下:

从上面的结果可以看到,用typeof操作符可以显示对象的类型,那么typeof操作符作用域null和undefined的结果会是什么呢?

 alert(typeof null + " " + typeof undefined)

typeof 操作符作用于null居然显示”object“(这个好像不科学,我还以为会显示”null'“),作用于undefined显示”undefined“(这个符合我们希望的结果),所以当用typeof操作符来判断一个对象的类型时,特别要小心,因为这个对象有可能是null。上面只是给了一部分typeof作用于这些对象的结果,下面的表列出了typeof操作符作用于Boolean, Number, String, Array, Date, RegExp, Object, Function, null, undefined的结果(有兴趣的读者可以自行测试):

怎么判断JavaScript中对象的类型

从上表的结果可以看出Array, Date, RegExp显示的都是object,为什么不是直接的显示对象的类型呢?这就要引出js的另外一个操作符了:instanceof操作符,这个操作符用来判断一个对象是否为某种类型的对象,计算的值为true或者false。先来看下:

var now = new Date(); var pattern = /^[\s\S]*$/; var names = ['zq', 'john']; alert((now instanceof Date) + " "  + (pattern instanceof RegExp) + " " + (names instanceof Array));

很显然通过这个instanceof是能判断对象的类型的,但是这个只能判断除了基本类型(包含String类型)的其它类型,他是不能判断基本类型的。但是instanceof不是总是能正常判断的,考虑一个框架的情形,要判断其类型的对象是另外一个frame传递过来的对象,首先来看下下面的例子。
main.html

<!doctype html> <html lang="en">  <head>  <title>Main</title>  </head>  <frameset cols="45%,*">   <frame name="frame1" src="frame1.html"/>   <frame name="frame2" src="frame2.html"/>  </frameset> </html>

frame1.html

<!doctype html> <html lang="en">  <head>  <meta charset="UTF-8">  <title>frame1</title>  </head>  <script type="text/javascript">  var names = ['riccio zhang', 'zq', 'john'];  </script>  <body >   </body> </html>

frame2.html

<!doctype html> <html lang="en">  <head>  <meta charset="UTF-8">  <title>frame2</title>  <script type="text/javascript">  document.write("top.frame1.names instanceof Array:"   + (top.frame1.names instanceof Array));  document.write("<br/>");  document.write("top.frame1.names instanceof top.frame1.Array:"   + (top.frame1.names instanceof top.frame1.Array));  document.write("<br/>");  document.write("top.frame1.Array === top.frame2.Array?" + (top.frame1.Array === top.frame2.Array));  </script>  </head>  <body >   </body> </html>

names对象是在frame1框架中的,此时是通过frame1框架的Array来创建的,如果把names对象拿到frame2中的Array作比较,很显然names不是frame2中的Array的实例,以为frame1和frame2压根就不是同一和Array,从第2个现实结果可以很明显的看出names是他本身所在的frame的实例,从第3个输出可以看出frame1的Array和frame2的Array是不同的。那么遇到上面这种跨frame的比较该怎么办呢?我们总不能每次都拿框架对应的Array来做比较吧,有一种必须的办法可以解决上面的问题,看下面的代码:

var toString = {}.toString; var now = new Date(); alert(toString.call(now))

{}.toString表示获取Object对象上的toString方法(这个方法时Object对象的基本方法之一),toString.call(now)表示调用toString方法。调用Date对象最原生的toString()(这个方法是Object上面的方法)方法可以显示[object Date]类型的字符串,假如是Array,则会产生[object Array]的字样,也就是说进行上面的操作会显示类似[object Class]的字样,那么我们只要判断这个字符串不就可以知道其类型了吗?由此可以写出如下的工具类:
tools.js

var tools = (function(undefined){  var class2type = {},   toString = {}.toString;    var fun = {   type: function (obj){    return obj === null || obj === undefined ?       String(obj) : class2type[toString.call(obj)]   },   isArray: function (obj){    return fun.type(obj) === "array";   },   isFunction: function (obj){    return fun.type(obj) === "function";   },   each: function (arr, callback){    var i = 0,     hasLength = arr.length ? true : false;    if(!callback || (typeof callback !== 'function') || !hasLength){     return;    }    for(i = 0; i< arr.length; i++){     if(callback.call(arr[i], i, arr[i]) === false){       break;     }    }   }  };  fun.each("Boolean Number String Array Date RegExp Object Function".split(" "), function(i, name){   class2type["[object "+ name +"]"] = name.toLowerCase();  });  return fun; })();

tools提供了type,isArray,isFunction等方法用来判断对象的类型,根据实际的需要可以自己添加需要判断类型的方法。type接受一个obj参数,它将对象的实际类型以小写的形式返回,比如你的需要判断对象的类型是Array,那么此方法将会返回array.
根据上面提供的工具类,再重新改写上面的例子:
fram2.html

<!doctype html> <html lang="en">  <head>  <meta charset="UTF-8">  <title>frame2</title>  <script type="text/javascript" src="tools.js"></script>  <script type="text/javascript">  document.write("top.frame1.names instanceof Array:"   + (top.frame1.names instanceof Array));  document.write("<br/>");  document.write("top.frame1.names instanceof top.frame1.Array:"   + (top.frame1.names instanceof top.frame1.Array));  document.write("<br/>");  document.write("top.frame1.Array === top.frame2.Array?" + (top.frame1.Array === top.frame2.Array));  document.write("<br/>");  document.write("tools.isArray(top.frame1.names)?" + tools.isArray(top.frame1.names));  </script>  </head>  <body >   </body> </html>

以上就是关于“怎么判断JavaScript中对象的类型”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: 怎么判断JavaScript中对象的类型

本文链接: https://lsjlt.com/news/344095.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么判断JavaScript中对象的类型
    这篇“怎么判断JavaScript中对象的类型”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么判断JavaScript中对...
    99+
    2023-07-04
  • Java对象类型怎么判断
    在Java中,可以使用`instanceof`关键字来判断一个对象的类型。`instanceof`关键字用于判断一个对象是否是某个类...
    99+
    2023-08-16
    Java
  • java怎么判断对象类型
    在Java中,可以使用instanceof关键字来判断一个对象的类型。 例如,可以使用以下代码来判断一个对象是否属于某个特定类: O...
    99+
    2024-03-01
    java
  • JavaScript如何判断对象的数据类型
    这篇文章给大家分享的是有关JavaScript如何判断对象的数据类型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。判断对象的数据类型使用 Object.prototype.toS...
    99+
    2024-04-02
  • qt怎么判断一个对象的类型
    在Qt中,可以通过以下方法判断一个对象的类型:1. 使用`typeid`运算符:可以使用`typeid`运算符来获取一个对象的类型的...
    99+
    2023-08-16
    qt
  • JavaScript中怎么判断typeof类型
    这篇文章将为大家详细讲解有关JavaScript中怎么判断typeof类型,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、对于原始类型,除了null,您还可以调用typeof显示正确的类型...
    99+
    2023-06-20
  • Java对象类型的判断详解
    在Java中,可以使用`instanceof`运算符来判断一个对象的类型。`instanceof`运算符用于检查一个对象是否是一个特...
    99+
    2023-08-15
    Java
  • js怎样判断对象的数据类型
    这篇文章主要介绍js怎样判断对象的数据类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!判断对象的数据类型使用Object.prototype.toString配合闭包来实现对象数据...
    99+
    2024-04-02
  • 怎么在JavaScript中进行类型判断
    这期内容当中小编将会给大家带来有关怎么在JavaScript中进行类型判断,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、对浏览器事件...
    99+
    2023-06-14
  • JavaScript怎么判断数据类型
    小编给大家分享一下JavaScript怎么判断数据类型,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!判断数据类型使用 Object.prototype.toStr...
    99+
    2023-06-27
  • python判断对象的类型(字典,列表,
    return (type(obj).__name__ == 'dict') 字典:dict 列表:list 集合:set ...
    99+
    2023-01-31
    字典 对象 类型
  • JavaScript中怎么判断对象是否存在
    JavaScript中怎么判断对象是否存在,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。现在,我们要判断一个全局对象myObj是否存在,如...
    99+
    2024-04-02
  • 怎么在javascript中判断是否为对象
    本篇文章给大家分享的是有关怎么在javascript中判断是否为对象,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。判断方法:1、使用toString()来判断;2、使用“obj...
    99+
    2023-06-14
  • JavaScript中怎么判断对象是否为空
    这篇文章将为大家详细讲解有关JavaScript中怎么判断对象是否为空,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在自己的日常开发中,一般使用Object.keys()来判断对象是否为空:const&n...
    99+
    2023-06-29
  • java判断对象是否是string类型
    instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。 用法:result = object instanceof clas...
    99+
    2019-10-13
    java
  • 如何判断JavaScript类型
    今天小编给大家分享一下如何判断JavaScript类型的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。本文提供四种方法判断js...
    99+
    2023-06-26
  • JavaScript类型如何判断
    这篇“JavaScript类型如何判断”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JavaScript类型如何判断”文章吧...
    99+
    2023-06-30
  • 使用JavaScript怎么实现类型判断
    今天就跟大家聊聊有关使用JavaScript怎么实现类型判断,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、判断引用类型和基本类型的类型是不同的,判断基本类型可以用typeof:t...
    99+
    2023-06-15
  • 用javascript怎么判断对象中是否有参数
    这篇文章主要讲解了“用javascript怎么判断对象中是否有参数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“用javascript怎么判断对象中是否有参...
    99+
    2024-04-02
  • javascript中类型判断的示例分析
    小编给大家分享一下javascript中类型判断的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Javascript中数...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作