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

JavaScript Range2类的prototype是什么?对应Python的等效概念是什么?

问题解答

1. JavaScript中Range2类的prototype是什么

JS的class是构造函数的语法糖,你定义的Range2类本身是一个构造函数,它自带的prototype是一个预定义的对象,你在class块内写的所有实例方法(除了constructor以外的方法)都会自动挂载到这个对象上,所以最终Range2.prototype包含3个所有实例共享的方法:

  • toString()
  • 迭代器生成器方法*[Symbol.iterator]()
  • includes(x)

所有通过new Range2()创建的实例(比如你代码里的r),内部的隐式原型__proto__都会指向Range2.prototype,这也是为什么所有实例不需要单独复制这些方法,就能直接调用的原因。
你可以直接打印验证:

console.log(Range2.prototype)
// 输出的对象上就包含上述三个方法,以及自动继承的Object原型方法

2. 对应Python的近似等效概念

JS的prototype核心作用是存储类的所有实例共享的方法,避免每个实例单独拷贝方法占用内存,和这个功能最接近的就是Python的类对象本身的实例方法集合:
你在Python的class块内定义的所有普通实例方法(第一个参数为self的方法),都会存储在Python类对象的属性字典里,不会在每个实例初始化的时候复制一份,实例调用方法时如果自己的属性里找不到,就会自动去所属类的方法集合里查找,和JS的原型链查找逻辑完全对应。

举个修正参数名后的Python示例(Python中from是关键字不能直接用作参数名):

class Range2:
    def __init__(self, from_num, to_num):
        self.from_num = from_num
        self.to_num = to_num
    # 下面的方法都存在Range2类对象上,所有实例共享
    def includes(self, x):
        return self.from_num <= x <= self.to_num

这里Range2类对象存储的includes等实例方法,就等效于JS里Range2.prototype上挂载的方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:45:00