• js中的instance,isPrototype和getPrototypeOf的使用,来判断类的关系


    在这里插入图片描述

    😁 作者简介:一名大四的学生,致力学习前端开发技术
    ⭐️个人主页夜宵饽饽的主页
    ❔ 系列专栏:JavaScript小贴士
    👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇气

    ​🔥​前言:

    这里是关于对类的关系和判断,我们可以使用instance和isPrototype和getPrototypeOf这三个方法来判断一个类和对象的从属关系,希望可以帮助到大家,欢迎大家的补充和纠正

    检查类的关系instance和isPrototype,getPrototypeOf

    1 instance方法

    概念: **instanceof**运算符用于检测构成函数的prototype属性是否出现在某一个实例对象的原型链上面

    语法:

    object instanceof constructor
    
    • 1

    参数:

    • object:某一个实例对象
    • constructor:某一个构造函数

    实例:

    //第一种情况
    function Foo(){
    
    }
    
    Foo.prototype.blah=function(){
    	console.log('验证')
    }
    
    var a=new Foo()
    
    console.log(a instanceof Foo) //true
    
    //第二种情况
    class Person {}
    
    const p = new Person();
    
    console.log(p instanceof Person); // true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    上述的代码中,instanceof 操作符的左操作数是一个普通的对象,右操作数是一个函数。instanceof 回答的问题是:在 a 的整条 [[Prototype]] 链中是否有指向 Foo.prototype 的对象?

    😔 可惜的是,这个方法只能处理对象(a)和函数之间的关系,如果想要判断两个对象(比如a和b)之间是否通过[[Prototype]]链关联,我们就得请出下一个方法isPrototypeOf

    2 isPrototypeOf()方法

    概念: isPrototypeOf() 方法用于检查一个对象是否存在于另一个对象的原型链中。

    语法:

    prototypeObj.isPrototypeOf(object)
    
    • 1

    参数:

    • object:要搜索其原型链的对象
    • prototypeObj:原型对象

    例子:

    //第一种情况
    function Person() {} 
    
    var p = new Person();
    
    console.log(Person.prototype.isPrototypeOf(p)); // true
    
    //第二种情况
    function Student() {}
    
    Student.prototype = Object.create(Person.prototype); 
    
    var s = new Student();
    
    console.log(Person.prototype.isPrototypeOf(s)); // true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    3 getPrototypeOf方法

    概念: Object.getPrototypeOf() 静态方法返回指定对象的原型(即内部 [[Prototype]] 属性的值)。

    语法:

    Object.getPrototypeOf(obj)
    
    • 1

    参数:

    • obj:要返回原型的对象

    返回值:

    给定对象的原型,可能是null

    例子:

    const proto = {};
    const obj = Object.create(proto);
    Object.getPrototypeOf(obj) === proto; // true
    
    • 1
    • 2
    • 3

    上述代码中,创建了obj的原型对象是proto,使用getPrototypeOf方法来获取obj的原型对象,然后达到判断对象关系的目的

  • 相关阅读:
    大漠插件普通定制版内存调用与com对象调用方法
    Docker的资源配额
    C和指针 第10章 结构和联合 10.5 位段
    Oracle/PLSQL: Sinh Function
    谁在「拉动」智能驾驶增量
    9.0、C语言——初识指针
    【JavaScript】使用XMLHttpRequest发送网络请求
    博弈论学习笔记【未完】
    小程序jsencrypt不兼容处理一步步“调教“jsencrypt过程,调到服为止
    excel常用函数
  • 原文地址:https://blog.csdn.net/m0_56132701/article/details/134431224