在前面我们知道了引用类型是什么了,也就能理解包装类型了。包装对象其实也是一种引用类型,之所以要单独提出来只不过是因为它们可以把原始类型的值变成(包装成)对象,这样它们也就获得了各自类型相应的特殊行为了。

每当我们读取一个基本类型值得时候,后台就会创建一个对应的基本包装对象类型的对象,从而让我们能够在调用一些方法来操作这些数据。

下面是一个实例:

var str="abc";
str.length;//3
str.color="red";
str.color;//undefined

我们知道,基本类型值不是对象,按理说就不该有属性和方法。的确,基本类型值是没有属性和方法的,但是有种其它的能力,那就是当你读取这个基本类型值得时候,它们会偷偷地,在你毫不知情的情况下完成下面这些步骤:

(1)创建String类型的一个实例;
(2)在实例上调用指定的方法;
(3)销毁这个实例;

这样我们就能够解释为什么str.length会得到3了,至于下面str.color得到undefined的结果,则是因为实例使用完后会销毁,这样我们就不能为它们添加自定义的属性和方法了(注意是自定义的,不是自带的),当然了,本身自带的还是可以用的。

要是我们执意想要给它们添加自定义的属性和方法时,那就得使用new调用基本包装类型的构造函数了,当然了,使用new Object()这个方法也可以了。

var st=new String("123");
st.color="red";
st.color;//"red",这是返回我们要的结果了
typeof st;//"object",现在数据类型变成了对象了

再看看下面这个实例:

var str=String("123456");
typeof str;//"string",注意返回的数据类型是String,不是object

上面这个实例主要是想要说明,当要使用包装类型时,一定要使用new然后调用构造函数,直接使用函数仅仅是起到转换数据类型的作用。

转载于:https://www.cnblogs.com/YeChing/p/6272779.html

理解基本包装类型Number,String,Boolean相关推荐

  1. Dart —— 基础数据类型 Number String Boolean List Map Set Rune Symbol

    Dart汇总请点击这里 内建类型 文章目录 Dart 语言支持以下内建类型: Number String Boolean List Set Map Rune Symbol Dart 语言支持以下内建类 ...

  2. 一分钟理解Java包装类型

    转载自  一分钟理解Java包装类型 Java 一直标榜自己是一个纯粹的面向对象语言,自作聪明的为所有的值类型都提供相应的引用类型(不明白这两个概念,看之前的<一分钟理解传值和传引用>)比 ...

  3. 深入理解基本包装类型

    :点上面关注免费学习前端知识! 为了便于操作基本类型值,ECMAScript还提供了3个特殊的引用类型: Boolean . Number 和 String .这些类型与本章介绍的其他引用类型相似,但 ...

  4. 内置对象的API Array数组对象 String字符串对象 json字符串 JSON对象 js作用域及变量预解析 引用类型与值类型区别 共享引用 基本包装类型 数组去重

    01-内置对象的API a.Date对象获取时间 b.Array对象数组加工 c.String对象字符串加工 d.json字符串的语法格式 e.JSON对象的字符串与对象转换应用 02-JS作用域 a ...

  5. java integer引用传递_在java中String,对象,Integer(包装类型的)关于引用传递还是值传递...

    场景: 大家都知道基本的数据类型,int,float等等这种是按值传递的.但是对于String,对象,Integer是怎样传递呢? 原理知识: 如果参数类型是原始类型,那么传过来的就是这个参数的一个副 ...

  6. java integer 值传递_在java中String,对象,Integer(包装类型的)关于引用传递仍是值传递...

    场景: 你们都知道基本的数据类型,int,float等等这种是按值传递的.可是对于String,对象,Integer是怎样传递呢?java 原理知识: 若是参数类型是原始类型,那么传过来的就是这个参数 ...

  7. JS对象转换为Number/String的内部原理 JS在浏览器中的运行环境

    ECMAScript2015官方文档:http://www.ecma-international.org/ecma-262/6.0/#sec-functiondeclarationinstantiat ...

  8. 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_其他方 ...

  9. Js强制类型转换——String类型 / Number类型/Boolean类型

    String类型 / Number类型 强制类型转换---String 强制类型转换---Number 强制类型转换---Boolean JS有六种数据类型,其中前五为基本数据类型: 类型 名称 St ...

最新文章

  1. Maven环境配置及IntelliJ IDEA中的Maven部署(亲自测试)
  2. how to find element's document section
  3. html全屏播放一段视频,显示HTML5视频全屏(Show HTML5 Video Fullscreen)
  4. mysql recordcount 1_[转载]ADO记录集GetRecordCount()返回记录条数为啥总为-1
  5. 前端调数据会经常用到的事件处理
  6. Linux 命令(115)—— rev 命令
  7. Python面向对象中的“私有化”
  8. 计算机键盘上的每一个按键应用,电脑键盘按键都代表着什么意思?
  9. Android 多种限定符
  10. 如何理解D触发器延迟一拍
  11. Java文件解析:Excel解析
  12. Symmetric Eigenvalue Decomposition
  13. HTML 3d立体旋转相册
  14. 私藏!认认真真推荐几个技术公众号
  15. golang 实现华容道
  16. XMail 安装配置使用
  17. 使用tail -f 命令时抛出“ inotify 资源耗尽,无法使用 inotify 机制,回归为 polling 机制”
  18. Tips(1):windows命令行删除软件
  19. 基于SpringBoot框架的管理系统【完整项目源码】
  20. 无领导小组讨论面试真题解析(六)——月球求生记

热门文章

  1. Java与Web前端发展前景及薪资对比
  2. c语言写os 编译器,你真的懂''Hello world''吗?从编译器到OS内核系列:编译器基本概念...
  3. mysql+imx6+移植_imx6ulevk---MfgTool的使用心得
  4. python operator 多属性排序_Python爬取高颜值美女(爬虫+人脸检测+颜值检测)你能打几分?...
  5. 计算器计算经纬距离_经纬度距离角度计算工具
  6. 水晶报表如何查看sql_amazon自动广告如何查看报表?怎么知道亚马逊的自然流量和广告流量分别是多少?...
  7. visual studio内存溢出检测工具_详解JVM内存管理与垃圾回收机制2 何为垃圾
  8. 使用pkg打包编译nodejs程序,手动设置缓存内容
  9. NYOJ-苹果(dp)
  10. 面向对象的设计原则-类设计原则