为什么 var n = 1,可以调用 n.toFixed ?
虽然 n 是基本类型,但是在执行 n.toFixed 的时候,n 会被临时包装成 Number(n),得到一个临时对象,由于是对象,所以也就可以调用方法了。Java 中也有类似的 “自动装箱” 概念。
两个字符串的 toString 方法是同一个方法吗?
是同一个方法。想象一下,如果不是共用一个方法的话,那么每创建一个字符串,都要产生一堆的重复方法。
JS 是靠原型链做到复用的,每个对象上都有一个 proto 属性,指向了对象的原型,比如每个字符串都有 trim 方法,这些方法就是存储在 String 原型对象上,而 String 原型对象也有 proto 属性,指到了 Object 的原型对象上,所以每个字符串都有 toString 方法。