原始类型的方法(字符串不是对象,为什么可以在js调用方法?)

原始类型的方法

前言

总所周知,在JS中,数据类型有8种,其中原始类型有7种,分别是stringnumberbooleannullundefinedsymbolbigint。以及引用类型1种,object

一般来说,能调用方法的只有对象。如果一个变量为字符串,是无法调用属性或者方法的。

let a = "alex";
a.age = 18;
alert(a.age); // undefined  

但是在我们日常中,经常会使用例如toUpperCase()的方法,可以直接使用在原始类型上。

let str = "alex";
alert(str.toUpperCase()); // ALEX

##原因

在上面这个例子中,“对象包装器”发挥了作用。“对象包装器”是为了实现可以在原始对象上使用方法,而采取的一个解决方法,在内部实现了这样的流程:
1.在访问str属性的时候,会创建一个包含字符串字面值的特殊对象,并且具有有用的方法,例如 toUpperCase()
2.该方法运行并返回一个新的字符串
3.特殊对象被销毁,只留下原始值 str

值得注意的是null undefined没有任何“对象包装器”,也没有任何方法,任何调用都会报错。

原始类型的方法(字符串不是对象,为什么可以在js调用方法?)

上一篇:WebAssembly 导出c结构体 js获取


下一篇:自动化的犯一个小错误 driver=webdriver.chrome() TypeError: 'module' object is not callable