深入理解javascript原型和闭包(5)——instanceof

摘要:
您可以使用typeof来判断,但当typeof判断引用类型时,返回值仅为对象/函数,并使用实例。F1由Foo函数创建。为什么是真的?首先,让我们来谈谈判决实例规则。根据上面的代码,见下图:实例运算符的第一个变量是一个对象,第二个变量通常是一个函数。实例的判断规则是:沿着B的原型线找到。

对于值类型来说,可以用typeof判断,但typeof判断引用类型的时候返回值只有object/function,并不知道到底是哪一个。这个时候就要用到instance。例如

深入理解javascript原型和闭包(5)——instanceof第1张

上图中,f1是被Foo函数创建得,但是“f1 instanceof Object”为什么是true呢?

至于为什么过会儿再说,先说下instanceof判断的规则。根据以上代码看下图:

深入理解javascript原型和闭包(5)——instanceof第2张

instance运算符的第一个变量是一个对象,暂时称为A;第二个变量一般是一个函数,暂时称为B。

instance的判断规则是:沿着A的_proto_这条线来找,同时沿着B的prototype这条线来找,如果两条线能找到同一个引用,即同一个对象,那么久返回true,如果找到终点都没有重合则返回false。

根据上面的规则,就可以看到“f1 instanceof Object“”都指向Object.prototype,因此返回true。

通过上面的规则,可以解释更多怪异的现象,例如:

深入理解javascript原型和闭包(5)——instanceof第3张

深入理解javascript原型和闭包(5)——instanceof第4张

从上面图中可以看出,最终都是指向一个地方。

instance表示的就是一种继承关系,或者原型链的结构。

免责声明:文章转载自《深入理解javascript原型和闭包(5)——instanceof》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS之多线程浅谈多线程死锁下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

NXOpen 批量导出STP、IGS、DWG、DXF、PDF(五合一)

C++ 关键代码 //导出STPvoid ExportFile::ExportSTPfile(){    try    {  UF_initialize();    string  filepath = strDir +  "\" ;//拼接路径   //获取图层过滤   PropertyList *stringLayerProps = stringLay...

7.qml-Qt对象

QML除了支持ECMAScript内置对象对象外,还自己给用户提供了许多宿主对象.当然用户也可以自己自定义对象. 内置对象 : 由 ECMAScript所提供的对象;如Object、Array、Math、Date等等。 宿主对象 :即由 ECMAScript 实现的宿主环境提供的对象,比如Qt对象. 自定义对象 :自定义构造函数所创建的对象。 本章我们...

【转】通用权限管理设计 之 数据权限

阅读目录 前言 初步分析 通用查询机制 数据权限规则 实际应用 结语 前言 前一篇文章《通用权限管理设计 之 数据库设计方案》介绍了【主体】- 【领域】 - 【权限】( who、what、how问题原型 ) 的设计思想 本文将对这种设计思想作进一步的扩展,介绍数据权限的设计方案。 权限控制可以理解,分为这几种 : 【功能权限】:能做什么的问题,如...

HyperLedger/Fabric JAVA-SDK with 1.1

HyperLedger/Fabric JAVA-SDK with 1.1 该项目可直接在github上访问。 该项目介绍如何使用fabric-sdk-java框架,基于fabric-sdk-java v1.1正式版开发,可向下兼容1.0版本。 该项目没有对原JAVA-SDK做修改,主要是结合HyperLedger Fabric与fabric-sdk-jav...

Handsontable对单元格的操作

1.自动填充单元格数据 fillHandle:true/false    //当值为true时,允许拖动单元格右下角,将其值自动填充到选中的单元格 2.合并单元格 mergeCells:[{row:起始行数,cols:起始列数,rowspan:合并的行数,colspan:合并的列数},...] 3.初始化单元格或列的对齐方式 水平样式:htLeft,h...

网络管理snmp实验

一、实验目的: 1)学习教材“8.1Windows管理命令”,熟练掌握操作系统自带的基本网络测试工具,课外完成。 2)学习并掌握snmputil命令的格式及基本使用。 二、实验要求提示: 1)分别使用Snmputil, SnmpUtilG试验(相关软件和资料见“资料/其他 ”)。 2)先对自己使用的计算机,再两人一组、对同学的计算机进行网管实验。 1)查看...