• 手写实现js中的instanceof


    // 自己实现 instance,left 代表 instanceof 左值,right代表 instanceof 右值
    function instance(left, right) {
        let proto = Object.getPrototypeOf(left);
        let prototype = right.prototype;
        while (true) {
            // 如果传入的 left 的原型不存在,则直接返回 false
            if (!proto) {
                return false;
            }
            // 如果传入的 right 刚好是 left 的上一级,则直接返回 true
            if (proto === prototype) {
                return true;
            }
            // console.log(proto);
            // 否则将当前 left的原型 赋值为 left原型的原型(上一级原型)进入循环继续比较
            proto = Object.getPrototypeOf(proto);
        }
    }
    
    // 测试
    function Animal(name) {
        this.name = name;
    }
    
    function Cat(color) {
        this.color = color;
    }
    
    Cat.prototype = new Animal("cat1");
    let cat1 = new Cat("gray");
    console.log(cat1); // Animal { color: 'gray' }
    console.log(Object.getPrototypeOf(cat1)); // Animal { name: 'cat1' }
    console.log(Object.getPrototypeOf(Cat)); // {}
    console.log(Object.getPrototypeOf(Animal)); // {}
    console.log(Object.getPrototypeOf(Object.getPrototypeOf(cat1))); // {}
    console.log(cat1 instanceof Cat); // true
    console.log(cat1 instanceof Animal); // true
    console.log(cat1 instanceof Object); // true
    console.log(Animal instanceof Object); // true
    console.log("===========================");
    console.log(instance(cat1, Cat)); // true
    console.log(instance(cat1, Animal)); // true
    console.log(instance(cat1, Object)); // true
    console.log(instance(Animal, Object)); // true
  • 相关阅读:
    WPF复杂形状按钮
    (WPF)360安全卫士界面设计
    WPF图标拾取器
    WPF透明窗体制作
    空间分析开源库GEOS
    GIS开源程序收集
    flask 链接 url_for()
    自定制404错误页码
    Flask 模板语言
    flask路由和视图和cookie
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/16350000.html
Copyright © 2020-2023  润新知