为了便于操作基本类型值,ECMAScript还提供了三个特殊的引用类型:Boolean、Number和String。这些类型与其他引用类型相似,同时也具有与各自的基本包装类型相应的特殊行为。实际上,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。

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

这个例子中的变量s1包含一个字符串,字符串当然是基本类型值。而下一行调用了s1的substring()方法,并将返回的结果保存在s2中。我们知道,基本类型值不是对象,因此从逻辑上讲,它们不应该有方法(但是它们确实有方法)。其实,为了让我们实现这种直观的操作,后台已经自动完成了一系列的处理。当第二行代码访问s1时,访问过程处于一种读取模式,也就是从内存中读取这个字符串的值。而在读取模式中访问字符串时,后台都会自动完成下列处理:

(1)创建String类型的一个实例。

(2)在实例上调用指定方法。

(3)销毁这个实例。

可以使用以下代码表示:

var s1 = new String("some text");
var s2 = s1.substring(2);
s1 = null;

经过此番处理,基本的字符串值就变得跟对象一样了。而且,上面三个步骤也适用于Boolean和Number类型对应的布尔值和数字值。

引用类型与基本包装类型的主要区别就是对象的生命周期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,只存在于这一行代码的执行期(瞬间),然后立即销毁。这就意味着我们不能在运行时为属性添加属性和方法。

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

当然,可以显示调用Boolean、Number和String来创建基本包装类型的对象,不过,不帮不建议这么做。对基本包装类型的实例调用typeof会返回"object",而且所有基本包装类型的对象都会被转化为布尔值true。。

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

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

var value = "25";
var number = Number(value);//转型函数
alert(typeof number) //numbervar obj = new Number(var); //构造函数
alert(typeof obj) //object

Javascript之基本包装类型相关推荐

  1. 《JavaScript高级程序设计(第四版)》红宝书学习笔记(第五章:基本引用类型,原始值包装类型,单例内置对象)

    第五章:基本引用类型 引用值(或者对象)是某个特定引用类型的实例.新对象通过使用new操作符后跟一个构造函数(constructor)来创建. 5.1 Date 这里不对Date进行详细深入,仅基于书 ...

  2. Javascript第六章基本包装类型第八课

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

  3. 《JavaScript高级程序设计》五、引用类型(基本包装类型)

    <JavaScript高级程序设计>五.引用类型(基本包装类型) 目录: Boolean类型 Number类型 String类型 字符方法 字符位置方法 字符操作方法 字符大小转换方法 字 ...

  4. 【JavaScript】9.基本引用类型-原始值包装类型

    本篇笔记示例代码仓库:https://github.com/zhangtuo1999/study-js . 本篇笔记遵循中文技术文档的写作规范. 主要内容来源于<JavaScript高级程序设计 ...

  5. 《JavaScript高级程序设计 (第3版)》学习笔记15:chapter_5 - 6 基本包装类型

    让学习"上瘾",成为更好的自己! <!DOCTYPE html> <html lang="en"> <head><me ...

  6. JavaScript基本包装类型

    基本包装类 js中为了便于基本类型操作,提供了3个特殊的引用类型:Boolean.Number.String它们具有基本类型特殊行为. 实际上,每当读取一个基本类型的时候,js内部会自动创建一个基本包 ...

  7. 为什么要在JavaScript中使用静态类型? (使用Flow进行静态打字的4部分入门)

    by Preethi Kasireddy 通过Preethi Kasireddy 为什么要在JavaScript中使用静态类型? (使用Flow进行静态打字的4部分入门) (Why use stati ...

  8. javascript中基本包装、算数运算符、递增递减运算符、赋值运算符、比较运算符、逻辑运算符、运算符优先级

    基本包装类型: 指基本类型的数据变量通过调用属性或者方法包装成了复杂类型,这个变量也称为基本包装类型对象 <script>var str = 'hello';str = str.repla ...

  9. JavaScript面向对象之Object类型

    大家都知道对象都是属于Object类型的.下面是一些详细总结,希望可以帮助到有需要的小伙伴. JavaScript面向对象之Object类型 在JS中所有的对象都拥有同一个父级,就是Object. O ...

  10. JS-9 JS常见内置类;包装类型;Number类方法与实例方法;Math方法;String类常见方法;数组方法(增删改查+遍历+排序);时间Date 构造函数+获取信息+设置信息+获取Unix时间戳

    目录 1_包装类型 2_Number类补充 3_Math对象 4_String类的补充 4.1_基本使用 4.2_修改字符串 4.3_查找.替换字符串 开头与结尾 4.4_获取子字符串 4.5_其他方 ...

最新文章

  1. CVPR 2022放榜!录用 2067 篇,接收数量上升24%
  2. 几类 3.3V降压稳压电源IC芯片简介
  3. SQL注入学习——时间盲注详解 sqli-labs(Less 9)
  4. 返回指定月份的周列表 包含 周序号、开始日期、结束日期(不包含周末)
  5. 中英文停用词(stop word)列表
  6. java8中数据类型_Java 8中 基本数据类型
  7. 广州互联网公司面试地图
  8. 网络正常连接,浏览器无法访问网络
  9. 原生JS拖拽模型(有限制范围的)
  10. win+ubuntu安装Nvidia显卡驱动
  11. SendMail.java
  12. 《钢铁是怎样炼成的》的读后感作文5000字
  13. Spire.PDF for Java 4.8.7 Crack
  14. python解决凯撒密码
  15. 第一天-网络设备安全操作知识
  16. NTP时间同步器(时钟同步器)对于网络的重要性
  17. 计算机等级考试数据库三级模拟题5
  18. GBase 8a trace 日志
  19. 丁香园开源接口管理系统
  20. 读书笔记-干法-人生难免有失败的时候

热门文章

  1. paip.php调试不能显示局部变量内容w/ xdebug
  2. VSCode : vscode-remote下无法写入文件及linux文件读写权限
  3. Rust : RwLock读写锁
  4. 配置国内免费registry mirror -daocloud、网易、阿里云和七牛
  5. 2017:社保再选管理人基金公司争“主力”
  6. (转)DevOps,就是开发吃掉运维?
  7. 斥资57亿美金,Facebook 入局印度 | 凌云时刻
  8. 【生产调度】基于matlab遗传算法求解柔性生产调度(FJSP)问题【含Matlab源码 1780期】
  9. 【车间调度】基于matlab遗传算法求解车间调度问题【含Matlab源码 1396期】
  10. 【元胞自动机】基于matlab元胞自动机短消息网络病毒传播仿真【含Matlab源码 1289期】