JavaScript包装类

26 阅读2分钟

包装类的具体执行过程

var num = 123//你以为的 
var num = new Number(123)//v8执行的

要创建一个包装类实例,只需要将原始值作为参数传递给相应的包装类构造函数即可。例如,可以使用new String('Hello')创建一个字符串类型的包装类实例。而包装类实例则可以调用相应的方法和属性,如toUpperCase()、length等,而之所以很多看起来违背天理的东西也会有个undefined的根本原因就是JS引擎在执行到这一行的时候会自动去执行如下代码。

var num = new Number(4) 
num.len = 3//v8发现n是原始数据类型,不能有属性和方法,所以要删除 delete num.len

但删除掉的却只是len的值,len的声明却留了下来,这也是为什么len是undefined而不是报错

注意事项: 在使用包装类时,有几个注意事项需要牢记。首先,JavaScript会自动将原始值转换为相应的包装类实例,这种自动转化的过程称为自动包装。其次,包装类实例是不可变的,这意味着对包装类实例的修改并不会改变原始值本身。最后,包装类也有一些局限性和不足之处,例如包装类实例无法添加自定义属性和方法。

包装类的应用场景

包装类在字符串、数字和布尔类型中都有广泛应用。例如,我们可以使用String包装类提供的方法来处理字符串的大小写转换、查找子串等操作。Number包装类则提供了一些方便的数值转换和精确计算的方法。而Boolean包装类则用于判断和处理逻辑布尔值。