首页 > 其他分享 >instanceof和typeof的区别

instanceof和typeof的区别

时间:2024-03-08 15:34:48浏览次数:16  
标签:instanceof 区别 object alert typeof Array true

instanceof和typeof的区别

1.typeof:可以用来确定一个变量的数据类型
    2.instanceof:可以用来确定一个引用类型值的是什么类型的对象

     typeof用以获取一个变量的类型,typeof一般只能返回如下几个结 果:number,boolean,string,function,object,undefined。我们可以使用typeof来获取一个变量是否存 在,如if(typeof a!="undefined"){},而不要去使用if(a)因为如果a不存在(未声明)则会出错,对于Array,Null等特殊对象使用typeof 一律返回object,这正是typeof的局限性。

     如果我们希望获取一个对象是否是数组,或判断某个变量是否是某个对象的实例则要选择使用instanceof。instanceof用于 判断一个变量是否某个对象的实例,如var a=new Array();alert(a instanceof Array);会返回true,同时alert(a instanceof Object)也会返回true;这是因为Array是object的子类。再如:function test(){};var a=new test();alert(a instanceof test)会返回true。

如果我们希望获取一个对象是否是数组,或判断某个变量是否是某个对象的实例则要选择使用instanceof。instanceof用于判断一个变量是否 某个对象的实例,如var a=new Array();alert(a instanceof Array);会返回true,同时alert(a instanceof Object)也会返回true;这是因为Array是object的子类。再如:function test(){};var a=new test();alert(a instanceof test)会返回true。

谈到instanceof我们要多插入一个问题,就是function的arguments,我们大家也许都认为arguments是一个Array,但如果使用instaceof去测试会发现arguments不是一个Array对象,尽管看起来很像。

另外:

测试 var a=new Array();if (a instanceof Object) alert('Y');else alert('N');
得到'Y’

但 if (window instanceof Object) alert('Y');else alert('N');

得到'N'

所以,这里的instanceof测试的object是指js语法中的object,不是指dom模型对象。

使用typeof会有些区别
alert(typeof(window) 会得到 object

if (!Array.isArray(this.options)) {         return []       }

标签:instanceof,区别,object,alert,typeof,Array,true
From: https://www.cnblogs.com/hellofangfang/p/18061101

相关文章

  • Rails中的includes和joins的区别与用法
    includes和joins的不同当includes和joins的时候最重要的概念就是他们有他们的典型用例。includes使用贪婪加载(eagerloading)而joins使用懒加载(lazyloading),两者都非常有用,但是也都很容易被滥用导致程序性能降低或过度使用。如果我们看一眼rubyonrails文档,描述includes最重......
  • FFU、WIM、ESD、VHD和VHDX都是与Windows操作系统部署、备份和虚拟化相关的文件格式。
    FFU(FullFlashUpdate)文件格式是微软开发的,用于在Windows设备上进行固件更新和完整系统部署的一种映像文件格式。FFU文件包含了设备的完整磁盘映像,包括所有分区、文件系统和数据。这种格式允许精确复制存储设备的内容,提供了一种高效且可靠的方式来恢复、更新或部署设备。下面是对F......
  • 【Java】Integer.parseInt()和Integer.valueOf()的区别
    1.Integer.parseInt()和Integer.valueOf()的区别区别1Integer.parseInt()将字符串转换为基本类型int,返回一个int类型值。inti=Integer.parseInt(Strings);Integer.valueOf()将字符串转换为Integer对象,返回一个Integer对象。Integeri=Integer.valueOf(Strings);......
  • @Component和@Bean的区别
    个人回答:1.作用对象不同:@Component注解作用于类,而@Bean注解作用于方法、2.@Component通常是通过路径扫描来自动侦测以及自动装配到Spring容器中(我们可以使用@ComponentScan注解定义要扫描的路径从中找出标识了需要装配的类自动装配到Spring的bean容器中)。@Bean注解......
  • ItemsControl和ListView、ListBox的区别
    1、ItemsControl用来显示一个数据项的集合,它的底层是一个列表,它可以非常灵活的展示布局和数据以下是例子<ItemsControlItemsSource="{BindingStudent}"><ItemsControl.ItemTemplate><DataTemplate> <TextBlockText="{BindingId}"/> <Tex......
  • c/c++指针中 * 和 & 的区别与联系
    在C语言中,*和&是两个非常基础但功能相反的操作符,它们分别是解引用(dereference)操作符和取地址(address-of)操作符。&(取地址操作符)用途:&操作符用来获取变量的内存地址。示例:假设有一个整型变量intx=10;,则&x表示获取变量x的内存地址。如果你有一个指针变量想要存储变量x的地址,可......
  • (笔记)Linux信号(signal) 机制和信号量(semaphore)机制的区别
     字面上相似,但是本质上存在巨大的差别! 一、Linux信号(signal)机制signal,又简称为信号(软中断信号)用来通知进程发生了异步事件。原理:一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来......
  • 什么是ConcurrentHashMap?不同JDK下ConcurrentHashMap的区别?
    什么是ConcurrentHashMap?不同JDK下ConcurrentHashMap的区别?  一、HashMap线程安全  我们知道,在并发情况下,使用HashMap会有线程安全的问题,那么如何避免呢?  想要避免Hashmap的线程安全问题有很多办法,比如改用HashTable或者Collections.synchronizedMap  但是,这两者......
  • promethues 的label和metrics有什么区别:labels 用于数据监控指标的筛选,到底要监控哪
    在Prometheus中,Label和Metrics是两个核心概念,它们在监控和度量方面扮演不同的角色:Label(标签): labels用于数据监控指标的筛选,到底要监控哪些指标到promethuesLabels是用于标识和区分时间序列数据的键值对。每个时间序列数据都可以带有多个不同的标签,用来描述该数据的......
  • c#与java之间的区别盘点
    原文链接:http://www.mobiletrain.org/about/BBS/119467.htmlhttps://blog.csdn.net/clpig0125/article/details/50774628C#(CSharp)是Microsoft开发的一种面向对象的编程语言,而Java是由SunMicrosystems开发的一种面向对象的编程语言。虽然它们都是面向对象的编程语言,但它们之......