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

为什么JavaScript原始类型可以调用toString()方法?

问题解答

这个现象是JavaScript内置的临时包装对象机制导致的,具体逻辑如下:

  • JavaScript 中 number/string/boolean/symbol/bigint 这五类原始类型,都有对应的内置构造函数(也就是包装类:Number/String/Boolean/Symbol/BigInt)。原始类型本身确实只存值、没有任何属性和方法,所有的方法调用都是引擎通过临时创建包装类实例完成的。
  • 当你执行num.toString()时,JS 引擎会自动完成三个步骤:
    1. 以当前num的原始值4为基础,创建一个对应Number包装类的临时实例对象
    2. 调用这个临时对象上的toString()方法,得到返回值字符串"4"
    3. 立即销毁这个临时对象,整个过程对开发者完全透明

你可以用下面的代码验证临时对象“用完即销毁”的特性:

let num = 4;
num.abc = 123; // 给临时创建的Number对象添加属性,添加完成后临时对象立即销毁
console.log(num.abc); // 输出 undefined,本次访问会新建另一个临时Number对象,不存在abc属性

注意:如果主动用new Number(4)语法创建的是永久存在的包装类对象,不属于临时对象范畴,不会自动销毁,和原始值的存储逻辑完全不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 21:48:03