攒眉千度

文章 评论 浏览 31

攒眉千度 2022-05-04 13:55:28

根据《JavaScript高级程序设计》:
为了便于操作基本类型值,ECMAScript提供了3种特殊的引用类型:Boolean,Number和String。这三种类型称为基本包装类型

出现基本包装类型的情况

当在基本类型上使用一些方法时,后台会自动创建基本包装类型

var s1 = “some text”;
var s2 = s1.substring(2);

我们知道,基本类型值不是对象,因而从逻辑上讲它们不应该有方法(尽管如我们所愿,它们确实有方法)。其实,为了让我们实现这种直观的操作,后台已自动完成了一系列处理:

  1. 创建String类型的一个实例
  2. 在实例上调用指定的方法
  3. 销毁这个实例
    即:
var s1 = new String("some text");
var s2 = s1.substring(2);
s1 = null;

上面的步骤同样适用于Boolean和Number类型的值。

需要注意的是,自动创建的基本类型的对象,只存在于一行代码执行的瞬间,然后立即被销毁
例:

var s1 = "some text";
s1.color = "red";
alert(s1.color); //undefined

使用new调用基本包装类型构造函数

var s1 = new String("some text");

注意,上述方法等价于

var s1 = new Object("some text");
alert(s1 instanceof String) //true

Object构造函数会像工厂方法一样,根据传入类型返回对应的基本包装类型的实例。

需要注意的是,使用new生成的实例与直接调用同名的转型函数是不一样的。

var value = "25";
var number = Number(value); // 转型函数
alert(typeof number); // number

var obj = new Number(value); // 构造函数
alert(typeof obj); // object

第 106 题:分别写出如下代码的返回值

攒眉千度 2022-05-04 13:55:20

WeakMap 里有一段写成了 WeakSet。

第 4 题:介绍下 Set、Map、WeakSet 和 WeakMap 的区别?

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文