然而,神奇的是,我们还是可以针对这些资料进行操作!例如要将一字串全部改为大写,可以直接套用“toUpperCase()”达成如下:

宣告变数“String”、并赋值为“”abcde””后,居然可直接套用“toUpperCase()”将内容都转为大写,难不成这个字串变数本身就有自己的方法?但这不就违背了其身为“原始资料类型”应有的特性吗?

这是因为原始资料类型会被“强制转型”,在某个瞬间,“String”这个变数被强制转成“new String”,因此适用“String.prototype”的属性与方法,包含“toUpperCase()”,但套用完该方法之后,就变回原本的原始资料类型。

当然也可以直接在变数宣告时,就以实例形式宣告为“new String”,这当中的“String”是 JavaScript 预设的建构子函式(constructor function),因此“String.prototype”会自带许多属性与方法,但这些属性与方法不一定用得上,还会造成内存额外负担,因此,既然有强制转型机制,宣告时就以“原始资料类型”形式即可。