一、ECMAScript数据类型

(1)最新的 ECMAScript 标准定义了 7 种 数据类型:

6种 原型类型:

  1. Boolean. 布尔值,true 和 false.
  2. null. 一个表明 null 值的特殊关键字。 JavaScript 是大小写敏感的,因此 null 与 Null、NULL或其他变量完全不同。
  3. undefined. 变量未定义时的属性。
  4. Number. 表示数字,例如: 42 或者 3.14159。
  5. String. 表示字符串,例如:"Howdy"
  6. Symbol ( 在 ECMAScript 6 中新添加的类型).。一种数据类型,它的实例是唯一且不可改变的。

以及 Object 对象

(2)这7种数据类型中,对象为“引用类型”,其他六种为“原始类型”(或叫“基本类型”)。

二、原始类型没有属性和方法

(1)按原始类型和引用类型的定义来说,只有引用类型(对象)才有属性和方法,原始类型是没有属性和方法的。

(2)但是我们也能经常看到有下面这样的写法。

(3)我们使用 toString() 方法,将 num 这个数值类型转换成了字符串类型,如此我们用 原始类型 num 调用了 toString() 方法,那么是不是原始类型也能调用方法呢?答案是否定的。仍然只有对象才能拥有属性和方法。

(4)【疑问】为什么 num 调用了 toString() 却没有报错呢?这就需要我们了解包装对象的概念了。

三、包装对象的概念

(1)在JavaScript中,“一切皆对象”,包括三种原始类型的值(数值字符串布尔值),在一定条件下,也会自动转为对象,也就是原始类型的“包装对象”。

(2)包装对象是特殊的引用类型。每当读取数字、字符串和布尔值的属性或方法时,创建的 临时对象 称做包装对象。

四、包装对象

4.1 构造函数

(1)为了便于引用字符串的属性和方法,JavaScript将字符串值通过调用 new String() 的方式 转换成对象,这个对象继承了字符串的属性和方法,并被用来处理属性和方法的引用。数值和布尔值也是如此。

(2)虽然包装对象看上去和原来的值一模一样,显示出来的也是一模一样,但他们的 类型 已经变为 object

(3)【注意】包装对象和原始值用 === 比较会返回 false

4.2 数据类型转换

(1)Number、String 和 Boolean,如果不作为构造函数调用(即调用时不加 new);此时,Number()Boolean()String() 被当做普通函数,把任何类型的数据转换为 number、boolean和string类型(注意不是其包装类型)。

4.3 总结

(1)这三个包装对象作为 构造函数 使用(带有 new)时,可以将 原始类型的值转为对象

(2)作为 普通函数 使用时(不带有 new),可以将任意类型的值,转为原始类型的值

五、包装对象的销毁

(1)【注意】一旦包装对象的属性或方法的引用结束,这个新创建的对象就会销毁

(2)【说明】在上面的例子中,代码第二行 name 属性赋值时,包装对象就会登场,创建一个 str 对应的临时对象,当然,这行代码执行完成,这个对象也就被销毁。然后在第三行则会创建一个新的包装对象,这个对象当然没有 name 属性,所以输出的是 undefined。

六、包装对象的目的

6.1 涵盖所有值

(1)包装对象的最大目的,首先是使得 JavaScript 的对象涵盖所有的值

6.2 方便调用方法

(1)其次使得原始类型的值可以方便地调用某些方法。

参考文章

包装对象 -- JavaScript 标准参考教程(alpha)
javascript类型系统——包装对象 小火柴的蓝色理想

JavaScript-包装对象相关推荐

  1. javascript包装对象

    js对象是一种复合值:它是属性或已命名值得集合. 参考以下代码: var s = "hello world"; var len = s.length; 在该例子中,s是字符串,而字 ...

  2. JavaScript读书笔记(三)布尔值,null,undefined,全局对象,包装对象

    参照内容来自<JavaScript权威指南> 布尔值 任意JavaScript的值都可以转换为布尔值. 部分值会被转换为false,其他转换为true. 会被转换为false的有:(1)u ...

  3. JavaScript 原始值与包装对象

    前言 随着 JavaScript 越来越流行,越来越多地开发者开始接触并使用 JavaScript. 同时我也发现,有不少开发者对于 JavaScript 最基本的原始值和包装对象都没有很清晰的理解. ...

  4. JavaScript 基本类型与基本类型包装对象

    问题思考 阅读以下代码: const str1 = 'str1'; const str2 = new String('str2');typeof str1; // string typeof str2 ...

  5. 前端自学之路 Javascript 行话浅析(一)——字面量 包装对象 作用域

    文章目录 直接量(literal) Undefine NULL 包装对象 变量作用域 函数作用域 块级作用域 作用域链 变量解析 引用错误 本篇主要涉及较为基础的, 变量, 作用域方面的名词. 为啥要 ...

  6. JavaScript 复制对象与Object.assign方法无法实现深复制

    在JavaScript这门语言中,数据类型分为两大类:基本数据类型和复杂数据类型.基本数据类型包括Number.Boolean.String.Null.String.Symbol(ES6 新增),而复 ...

  7. Object(包装对象)

    包装对象定义 对象是 JavaScript 语言最主要的数据类型, 三种原始类型的值--数值.字符串.布尔值-- 在一定条件下,也会自动转为对象,也就是原始类型的"包装对象"(wr ...

  8. JavaScript:对象都是这样生成的!

    头图 | CSDN下载自视觉中国 作者 | flydean  责编 | 张文 来源 | 程序那些事(ID:flydean-tech) 本文将会深入讲解面向对象在 javascript 中的应用,并详细 ...

  9. JavaScript的对象、属性与方法

    目录 一.JavaScript的预解析 二 .JavaScript的对象(面向对象编程) 1.对象:是一种数据类型.是属性和方法的集合 (1)属性:是对象的静态特征 (2)方法(函数):是对象的动态特 ...

  10. 「译」一起探讨 JavaScript 的对象

    「译」一起探讨 JavaScript 的对象 原文地址:Let's explore objects in JavaScript 原文作者:Cristi Salcescu 译文出自:阿里云翻译小组 译文 ...

最新文章

  1. FxCop的一些规范建议
  2. apache站点优化—数据压缩
  3. CodeForces - 1267K Key Storage(组合数学)
  4. CommonCollection1反序列化链学习
  5. hdu1048(c++)
  6. 10000个虎年限定版红包封面!给!
  7. win7添加java环境变量path_Win7怎么配置Java环境变量?
  8. 操作WORD文件:使用MSWORD.OLB组件将RichTextBox中的文本保存为WORD格式文件。
  9. 将数组分为两部分,使得这两部分和最接近,返回这两部分的差值
  10. Win键失效,Win+L不起作用了
  11. 基于python的手写数字识别实验报告_联机手写数字识别实验报告
  12. 正和岛青年徽商正和塾小组2021年首聚—走进掌榕
  13. 刘润对话卫哲:阿里巴巴唯一生产的产品,就是干部
  14. 《信息学奥赛一本通》提高版题单
  15. ubuntu data backup and recovery
  16. QT 制作 Excel 表格常用操作方法
  17. 程序员欣宸的文章分类汇总
  18. 破解WMp11的install
  19. Nhibernate介绍与使用
  20. 【C语言】刷题计划第一期——洛谷编程题目集

热门文章

  1. 因果作用推断、因果网络学习及其他
  2. 走向通用智能的核心:任务树的建立
  3. 你住的城市7.5亿年前长啥样?这张互动地图能让你看到
  4. 解析|一文读懂AGV的关键技术——激光SLAM与视觉SLAM的区别
  5. 大脑通过统计推理表征“自我”
  6. 华为鸿蒙系统四大特性:基于微内核,面向全场景,分布式架构
  7. 中国移动:5G蜂窝IoT关键技术分析
  8. 2017年中国人工智能产业专题研究报告(完整版)
  9. 程序员的成长过程 | 每日趣闻
  10. AI 岗位年薪下降 8.9%,程序员越“老”越吃香,最新薪酬报告发布!