JavaScript中关于基本包装类型的解析

黄舟
Lepaskan: 2017-10-25 09:41:08
asal
1406 orang telah melayarinya

基本包装类型

基本包装类型是特殊的引用类型。每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而可以调用属性、方法来进行后续操作。

ECMAScript还提供了三种基本包装类型:Number、String、Boolean。

代码现状

我们经常写类似这样的代码,基本类型的变量可以当做对象一样调用属性、方法,但这又不是一个真正的对象只是一个变量而已,那么这是为什么呢?


1    var str = "hello world";
2     console.log(str.length);     // 11
3     console.log(str.toUpperCase());// HELLO WORLD
Salin selepas log masuk

其实为了便于操作基本数据类型的值,JavaScript 中的基本数据类型的值会在后台创建一个对应的基本包装类型对象,除了 null 和 undefined 所有的基本类型都有对应的包装类型。

如上代码,后台会自动完成下列的处理:

执行到第二行时:

  1. 创建 String 类型的一个实例;

  2. 在实例上调用指定的属性;

  3. 销毁这个实例;

执行到第三行时:

  1. 创建 String 类型的一个实例;

  2. 在实例上调用指定的方法;

  3. 销毁这个实例;

可以将以上三个步骤想象成是执行了下列ECMAScript代码:


1 // 执行到第二行时
2 var str = new String("hello world");
3 str.length;
4 str = null;
5 
6 // 执行到第三行时
7 var str = new String("hello world");
8 str.toUpperCase();
9 str = null;
Salin selepas log masuk

这样以上代码中字符串就变得跟对象一样了,同理分别适用与Boolean、Number类型对应的基本数据类型;

现在是不是明白原来这个这个基本包装类型其实就是基本数据类型对应的类型

类型映射关系
stringString
numberNumber
布尔类型(true、false)Boolean

注意:

并不是包装类型提供了方法,而是javascript 引擎后台创建了对应基本包装类型的实例(对象)

每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象 如:


1 var str = new String("hello world");
2  str.length;
3  str = null;
Salin selepas log masuk

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

主要区别就是这两种对象的生命周期不同。

通过以上代码块我们知道基本包装类型自动创建的对象在对象被调用的时刻存在,调用完后就被销毁了,而使用new关键字创建的引用类型的实例,对象在当前作用域都存在。


  s='some' s.age='Joel' console.log(s.age);
Salin selepas log masuk

如上代码在给字符串s添加age属性,但是当代码执行到第三行时name属性已经被销毁了,当代码执行第三行时,又创建了一个String 实例,但是这个实例并没有age属性所以输出undefined;


  s= String('some' s.age='Joel' console.log(s.age);
Salin selepas log masuk

总结

1、每个基本数据类型都映射到同名的基本包装类型(除了null、undefined)。
 2、在读取基本类型值时,就会创建对应的基本包装类型对象,从而方便了数据操作。
 3、操作基本包装类的对象一经执行完毕,就会立即销毁。

Atas ialah kandungan terperinci JavaScript中关于基本包装类型的解析. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!