分类
javascript

typeof 和 instanceof

instanceof

instanceof作用

instanceof运算符用于检测构造函数的prototype属性是否出现在某个实例对象的原型链上

object(实例对象) instanceof constructor(构造函数)

function C(){}
function D(){}
var o = new C();

o:实例对象

  • prototype(原型对象)
  • 实例对象具有__proto__属性,指向它的构造函数的原型对象(o.__proto__===C.prototype)
  • 实例对象也有自己的实例对象,直到找到null(o.__proto__.__proto__===Object.prototype)

如何写一个instanceof函数

 function getInstanceOf(obj, construct) {
        let flag = false;
        while(obj.__proto__) {
            if (obj.__proto__ === construct.prototype) {
                flag = true;
                break;
            }
            obj = obj.__proto__;
        }
        return flag;
    }

一些与instanceof有关的函数

  • Object.getPrototypeOf(o)===C.prototype得到o的原型对象
  • Object.prototype.isPrototypeOf(o) o是否为Object的派生实例。

由zhuishao

github:https://github.com/zhuishao/

发表评论

电子邮件地址不会被公开。 必填项已用*标注