【JS第16期】基本包装类型

259 阅读2分钟

ECMAScript提供了3个特殊的引用类型:Boolean、Number、String。每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象,从而让我们能调用一些方法操作这些数据。如:

var s1 = 'hello world';
var s2 = s1.substring(2);

s1 是一个基本类型值,而下一行调用了s1的方法,并将返回值保存在s2。正常来说,s1是一个字符串,不应该又方法的。但为什么可以调用substring方法尼?其实这些是后台自动完成了一系列的处理。具体步骤如下:

  1. 创建String类型的实例
  2. 在实例上调用指定方法
  3. 销毁这个实例 转换成代码如下:
var s1 = new String('hello world');
var s2 = s1.substring(2);
s1 = null;

引用类型与基本包装类型的区别

  • 使用new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中
  • 自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁
  • 自动创建的基本包装类型的对象在运行时不能添加属性或方法。如:
var s1 = "hello world";
s1.color = "red";
console.log(s1.color) // undefined
  • 基本包装类型的实例调用typeof会返回“object”
  • 基本包装类型的对象在转换为布尔类型时值都是true

Object构造函数会根据传入值类型返回相应的基本包装类型的实例。如:

var obj = new Object('hello wolrd');
console.log(obj instanceof String) // true

注意使用new 调用基本包装类型的构造函数,与直接调用同名的转型函数时不一样的。如:

var val = '25';
var num = Number(val) // 转型函数
console.log(typeof num) // number
var obj = new Number(val) // 构造函数
console.log(typeof obj) // object

如有侵权,请发邮箱至wk_daxiangmubu@163.com 或留言,本人会在第一时间与您联系,谢谢!!

关注我们
长按二维码关注我们,了解最新前端资讯