zoukankan      html  css  js  c++  java
  • 深入理解javascript原型和闭包(5)——instanceof

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    习题2-7
    习题2-6
    习题2-5
    习题2-4
    习题2-3
    作业二 分支循环结构
    2- 8
    实验三-计算圆柱体积
    实验三-计算n个圆柱体体积
    实验3-计算圆面积
  • 原文地址:https://www.cnblogs.com/endlessmy/p/8548928.html
Copyright © 2011-2022 走看看