You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中构造函数实例原型对象与函数原型对象的区别解析

JavaScript原型疑问:Tool.prototype到底指向什么?

先直接给结论:Tool.prototype返回的是Tool实例的原型对象,选项A正确;选项B的描述混淆了两个完全不同的原型概念——构造函数的prototype属性,和函数自身的原型。

核心概念区分

  1. Tool.prototype的本质
    当你用new Tool()创建实例时,每个实例的内部[[Prototype]](可通过Object.getPrototypeOf(实例)获取)都会指向Tool.prototype。这个对象是专门给Tool的实例准备的,用于让所有实例共享属性和方法,所以选项A的描述完全准确。

  2. 函数自身的原型≠Tool.prototype
    函数Tool本身也是一个对象,它自己的原型对象是Function.prototype(通过Object.getPrototypeOf(Tool)可以获取)。这个原型是所有函数都默认继承的,包含了call、apply、bind这类函数通用的方法,和Tool.prototype是完全独立的两个对象。

代码验证

function Tool() {}
const instance = new Tool();

// 实例的原型就是Tool.prototype
console.log(Object.getPrototypeOf(instance) === Tool.prototype); // 输出 true

// 函数Tool自身的原型是Function.prototype
console.log(Object.getPrototypeOf(Tool) === Function.prototype); // 输出 true

// 两个原型是不同的对象
console.log(Tool.prototype === Function.prototype); // 输出 false

总结两个概念的区别

  • 构造函数的实例原型对象:即构造函数的prototype属性指向的对象,是该构造函数所有实例的原型,用于实现实例间的属性/方法复用。
  • 函数的原型对象:指函数作为对象时自身的原型,也就是Function.prototype,是所有函数的通用原型,提供函数的基础方法。

内容的提问来源于stack exchange,提问作者Saad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 12:45:35