JavaScript学习手册(54)
发布日期:2021-05-09 19:29:20 浏览次数:18 分类:精选文章

本文共 901 字,大约阅读时间需要 3 分钟。

instanceof 运算符是如何判断的?

在 JavaScript 中,A instanceof B 表达式用于判断对象 A 是否是构造器 B 创建的实例。具体来说:

  • 表达式结构: A instanceof B

    • A:待判断的对象(实例)
    • B:构造器(类似于类或函数)
  • 判断逻辑:

    • 在执行此操作时,JavaScript 会检查 A 对应的原型链,是否与 B 对应的显式原型对象存在关联。如果有关联,则返回 true;否则返回 false
  • 构造器与实例的关系:

    • JavaScript 中的构造器通常是通过 new 关键字调用函数来创建实例的。例如:
    function Person(name) { this.name = name; }  
    const p = new Person('张三'); // p 是 Person 构造器的实例
    • 构造器的原型对象(Person.prototype)会成为新实例的[[Prototype]],从而使实例与构造器保持原型链联系。
  • 原型链的作用:

    • 原型链机制允许每个实例在查询属性时,沿其原型链逐级查找,最终指向 Object.prototype。这样可以让多个实例共享属性和方法,减少内存占用。
  • 实例与构造器的关系:

    • 如果构造器 B 的显式原型对象不在 A 的原型链上,则 A instanceof B 返回 false
    • 例如:
    class Teacher {}; // 定义一个构造器 Teacher  
    const student = new Teacher(); // student 是 Teacher 构造器的实例
    console.log(student instanceof Teacher); // true
    console.log(student instanceof Student); // false(假设 Student 是另一个构造器)
  • 通过以上原理,可以清晰地理解 instanceof 运算符是如何判断实例与构造器的关系的。这一机制是 JavaScript 原型继承系统的重要组成部分,自己也是一种 runtime 类型检查机制。

    上一篇:JavaScript学习手册(55)
    下一篇:JavaScript学习手册(53)

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月11日 09时36分09秒