【typeof instanceof Object.prototype.toString constructor区别】
几个数据类型判断区别
- typeof
- instanceof
- Object.prototype.toString
- constructor
typeof
它返回的是一个字符串,表示未经过计算的操作数的类型
typeof(undefined)
//"undefined"typeof(null)
//"object"typeof(100)
//"number"typeof(NaN)
//"number"typeof(true)
//"boolean"typeof("foo")
//"string"typeof function(){}
//functiontypeof([1,2])
//"object"typeof new object()
//object
typeof操作符适合对基本数据类型以及function的检测进行使用,当然null除外,而对于引用数据类型,就比如说Array 和 Object等它是不适用的。
instanceof
用于检测一个对象在其原型链中中是否存在一个构造函数的prototype属性
左操作数为对象,不是就返回 false,右操作数必须是 函数对象 或者 函数构造器,不是就返回 TypeError 异常
obj instanceof constr;
function Person(){}
function Student(){}
Student.prototype=new Person();
Student.prototype.constructor=Student;const ben=new Student();
ben instanceof Student;
//trueconst one=new Person()
one instanceof Person;
//true
one instanceof Student;
//false
ben instanceof Person;
//true
任何一个构造函数都有一个prototype对象属性,这个对象属性将用作new实例化对象的原型对象。
instance适合用于判断对象是否属于Array Date RegExp内置对象
不同的window 或者 iframe之间的对象类型检测无法使用instanceof检测
Object.prototype.toString
它可以通过toString()来进行获取每个对象的类型
为了每一个对象都能通过Object.prototype.toString来进行检测,需要以Function.prototype.call或者Function.prototype.apply的形式来进行调用,传递要检查的对象作为第一个参数。
Obejct.prototype.toString.call(undefined);
// "[object Undefined]"Obejct.prototype.toString.call(null);
// "[object Null]"Obejct.prototype.toString.call(true);
// "[object Boolean]"Obejct.prototype.toString.call('');
/// "[object String]"Obejct.prototype.toString.call(123);
// "[object Number]"Obejct.prototype.toString.call([]);
// "[object Array]"Obejct.prototype.toString.call({});
// "[object Object]"
使用object.prototype.toString方法能精准的判断出值的数据类型
但是需要注意的是:
方法重写:object.prototype.toString属于Object的原型方法,而Array或Function等类型作为Object的实例,都重写了toString方法,因此,不同的对象类型调用toString方法的时候,调用的是重写之后的toString方法,而非object上的原型toString方法,所以采用xxx.toString()不能得到其对象类型,之恩呢关键xxx转换成字符串类型。
constructor
任何对象都有constructor属性,继承自原型对象,constructor会指向构造函数这个对象的构造器或者构造函数
Student.prototype.constructor === Student;
// true
数组进行检测的时候就有:Array.isArray()正式引入JavaScript,该方法能准确的检测一个变量是否为数组类型
Array.isArray(variable)
相关文章:
【typeof instanceof Object.prototype.toString constructor区别】
几个数据类型判断区别 typeofinstanceofObject.prototype.toStringconstructor typeof 它返回的是一个字符串,表示未经过计算的操作数的类型 typeof(undefined) //"undefined"typeof(null) //"object"typeof(100) //"number"typeof…...
ARM Codec要求
文章目录 前言一、驱动1. linux kernel driver (非V4L2驱动)1.1 porting guide1.2 programing guide1.3 CPU占用率统计1.4 memory使用统计(不包含input/output/working buffer) 2. freeRTOS driver2.1 porting guide,驱动所支持freeRTOS版本列表2.2 programing guid…...
QT多线程
1.QT4.7以前的版本-----线程处理方式 1. 出现的警告 直接使用从UI—>转到槽,就会出现警告 2. 出现的错误 error: invalid operands of types QTimer* and void (QTimer::*)(QTimer::QPrivateSignal) to binary operator& 错误:无效的操作数类型’QTimer…...
【linux命令讲解大全】059.命令行利器:快速执行指定命令的command命令
文章目录 command补充说明语法参数实例 从零学 python command 调用并执行指定的命令。 补充说明 command 命令用于调用指定的命令并执行,命令执行时不查询 shell 函数。command 命令只能执行 shell 内部的命令。 语法 command [参数]参数 指令:需…...
opencv-4.5.2-android-sdk.zip安装教程
opencv-4.5.2-android-sdk.zip: 下载链接:百度网盘 请输入提取码 提取码:s0p2 导入模块的方法: ①、导入模块 ②、定位到sdk目录 点击ok就行,就导入成功了。导入成功后会多出一个可展开的opencv文件夹(自己命名的),一定要能展…...
接口自动化测试系列-excel管理测试用例
代码源码: 框架结构 核心代码 excel数据处理 from configureUtil.LogUtil import getlog logger getlog(targetNameHandleData) import xlrd from openpyxl import load_workbook,workbook from openpyxl.styles import Font, colors import openpyxl import o…...
Spring——Spring的控制反转IOC
摘要 IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;…...
基于CentOS7.5构建LVS-DR 群集,并启用Nginx负载均衡,一键完成。
在两台服务器上的步骤: 安装必要软件:在两台服务器上,安装必要的软件,包括ipvsadm和keepalived。使用以下命令安装软件: sudo yum install ipvsadm keepalived -y 禁用防火墙或配置规则:禁用防火墙或根据实…...
redis 数据结构(二)
整数集合 整数集合是 Set 对象的底层实现之一。当一个 Set 对象只包含整数值元素,并且元素数量不时,就会使用整数集这个数据结构作为底层实现。 整数集合结构设计 整数集合本质上是一块连续内存空间,它的结构定义如下: typed…...
Hadoop依赖环境配置与安装部署
目录 什么是Hadoop?一、Hadoop依赖环境配置1.1 设置静态IP地址1.2 重启网络1.3 再克隆两台服务器1.4 修改主机名1.5 安装JDK1.6 配置环境变量1.7 关闭防火墙1.8 服务器之间互传资料1.9 做一个host印射1.10 免密传输 二、Hadoop安装部署2.1 解压hadoop的tar包2.2 切换…...
[C++网络协议] I/O复用
具有代表性的并发服务器端实现模型和方法: 多进程服务器:通过创建多个进程提供服务。 多路复用服务器:通过捆绑并统一管理I/O对象提供服务。✔ 多线程服务器:通过生成与客户端等量的线程提供服务。 目录 1. I/O复用 2. select函…...
3D数据导出工具HOOPS Publish:3D数据查看、生成标准PDF或HTML文档!
HOOPS中文网http://techsoft3d.evget.com/ 一、3D导出SDK HOOPS Publish是一款功能强大的SDK,可以创作丰富的工程数据并将模型文件导出为各种行业标准格式,包括PDF、STEP、JT和3MF。HOOPS Publish核心的3D数据模型是经过ISO认证的PRC格式(ISO 14739-1:…...
[羊城杯 2023] web
文章目录 D0nt pl4y g4m3!!! D0n’t pl4y g4m3!!! 打开题目,可以判断这里为php Development Server 启动的服务 查询得知,存在 PHP<7.4.21 Development Server源码泄露漏洞(参考文章) 抓包,构造payload 得到源码 class Pro{private $ex…...
Redisson—独立节点模式和集群管理工具
一、集群管理工具 Redisson集群管理工具提供了通过程序化的方式,像redis-trib.rb脚本一样方便地管理Redis集群的工具。 1、 创建集群 以下范例展示了如何创建三主三从的Redis集群。 ClusterNodes clusterNodes ClusterNodes.create() .master("127.0.0.1:…...
基于RabbitMQ的模拟消息队列之五——虚拟主机设计
文章目录 一、创建VirtualHost类二、初始化三、API1.创建交换机2.删除交换机3.创建队列4.删除队列5.创建绑定6.删除绑定7.发送消息转发规则 8.订阅消息1.消费者管理2.推送消息给消费者 3.添加一个消费者管理ConsumerManager9.确认消息 创建VirtualHost类。 1.串起内存和硬盘的数…...
Hadoop的概述与安装
Hadoop的概述与安装 一、Hadoop内部的三个核心组件1、HDFS:分布式文件存储系统2、YARN:分布式资源调度系统3、MapReduce:分布式离线计算框架4、Hadoop Common(了解即可) 二、Hadoop技术诞生的一个生态圈数据采集存储数…...
进程、线程与构造方法
进程、线程与构造方法 目录 一. 进程与线程1. 通俗解释2. 代码实现3. 线程生命周期(图解) 二. 构造方法 一. 进程与线程 1. 通俗解释 进程:就像电脑上运行的软件,例如QQ等。 线程:…...
04 Linux补充|C/C++
目录 Linux补充 C语⾔ C语言中puts和printf的区别? Linux补充 (1)ubuntu安装ssh服务端openssh-server命令: ubuntu安装后默认只有ssh客户端,只能去连其它ssh服务器;其它客户端想要连接这个ubuntu系统,需要安装部署…...
利用python制作AI图片优化工具
将模糊图片4K高清化效果如下: 优化前的图片 优化后如下图: 优化后图片变大变清晰了效果很明显 软件界面如下: 所用工具和代码: 1、所需软件包 网盘链接:https://pan.baidu.com/s/1CMvn4Y7edDTR4COfu4FviA提取码&…...
React v6(仅支持函数组件,不支持类组件)与v5版本路由使用详情和区别(详细版)
1.路由安装(默认安装最新版本6.15.0) npm i react-router-dom 2.路由模式 有常用两种路由模式可选:HashRouter 和 BrowserRouter。 ①HashRouter:URL中采用的是hash(#)部分去创建路由。 ②BrowserRouter:URL采用真实的URL资源,…...
科技信息最前沿——TurboQuant:以极致压缩重新定义人工智能效率
谷歌TurboQuant技术突破:高效压缩AI内存需求谷歌TurboQuant技术通过创新的免训练压缩方法,有效解决了大语言模型面临的内存瓶颈问题。该技术采用两阶段压缩方案:PolarQuant极坐标量化和QJL误差修正,在不损失精度的前提下实现显著优…...
典型的TCP客户端单次事务处理VI 通过已建立的TCP连接,发送一段数据(命令/字符串),等待设备响应后读取指定字节数的返回数据
这个VI程序框图详细解析(LabVIEW TCP通信事务VI)这是一个典型的TCP客户端单次事务处理VI(常命名为“TCP Send & Receive.vi”或“TCP通信子VI”)。 它的核心功能是:通过已建立的TCP连接,发送一段数据&a…...
ZYNQMP平台下arm64架构的82599ES万兆网驱动移植实战指南
1. 环境准备与驱动源码获取 在ZYNQMP平台上折腾万兆网卡驱动移植,第一步得把开发环境搭好。我用的是一台Ubuntu 20.04的主机作为开发机,交叉编译工具链用的是Xilinx官方提供的Vitis工具链。这里有个坑要注意:必须确认你的工具链版本和ZYNQMP内…...
如何构建自修复AI系统:Seldon Core 2数据漂移检测终极指南
如何构建自修复AI系统:Seldon Core 2数据漂移检测终极指南 【免费下载链接】seldon-core An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models 项目地址: https://gitcode.com/gh_mirrors/se/seldon-cor…...
告别答辩 PPT 加班地狱!Paperxie AI:一键拿捏本科生的学术范儿演示
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 一、 答辩 PPT:压垮本科生的最后一根稻草? 论文定稿的喜悦,永远会被一句 “该做答辩 PPT…...
番茄小说下载器:全能解析引擎驱动的一站式数字阅读解决方案
番茄小说下载器:全能解析引擎驱动的一站式数字阅读解决方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 在数字阅读日益普及的今天,读者们常面临三大…...
Asian Beauty Z-Image Turbo 硬件需求详解:从消费级到专业级GPU配置
Asian Beauty Z-Image Turbo 硬件需求详解:从消费级到专业级GPU配置 1. 引言 最近有不少朋友在尝试跑一些新的图像生成模型时,遇到了一个挺实际的问题:我的显卡到底行不行?特别是像 Asian Beauty Z-Image Turbo 这类对画质和速度…...
开源多人游戏解决方案:Nucleus Co-op让单机游戏秒变多人派对
开源多人游戏解决方案:Nucleus Co-op让单机游戏秒变多人派对 【免费下载链接】splitscreenme-nucleus Nucleus Co-op is an application that starts multiple instances of a game for split-screen multiplayer gaming! 项目地址: https://gitcode.com/gh_mirro…...
从90V到430V宽压输入,手把手教你用Mathcad设计一个12V/1A的DCM反激电源(附避坑指南)
从90V到430V宽压输入:基于Mathcad的12V/1A DCM反激电源设计实战 面对工业设备、新能源系统等场景中波动剧烈的输入电压,设计一款稳定可靠的隔离电源始终是硬件工程师的挑战。本文将带您从零开始,用Mathcad工具完整实现90-430V宽压输入、12V/1…...
从无人机防抖到股票预测:聊聊卡尔曼滤波在你身边的那些‘隐藏’应用
从无人机防抖到股票预测:卡尔曼滤波如何悄悄优化你的日常生活 想象一下,你正在用手机拍摄一段奔跑中的宠物视频,画面却出奇地稳定;或者驾驶着搭载自动驾驶辅助系统的车辆,它总能精准预判前车距离。这些看似"智能&…...
