基本包装类型和引用类型

一、相关概念

1.定义

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

2.实例

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类型对应的布尔值和数字值
*/

2.区别

1.相关概念

  1. 引用类型与基本包装类型的主要区别就是对象的生存期
  2. 使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中
  3. 自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁

2.实例

//这就意味着不能在运行时为基本类型值添加属性和方法
var s1="some text";
s1.color="red";
alert(s1.color);//undefined
//在此,第二行代码试图为字符串s1添加一个color属性。但是,当第三行代码在此访问s1时,其color属性没有了。就是因为第二行常见的String对象在执行第三行代码时已经被销毁了。第三行又创建自己的String对象,而该对象没有color属性

三、显示创建基本包装类型

1.相关概念

  1. 可以显示地调用BooleanNumberString来创建基本包装类型的对象
  2. 应该在绝对必要的情况下在再这样做,因为这样会让人分不清自己是在处理基本类型还是引用类型的值
  3. 对基本包装类型的实例调用typeof会返回"Object",而所有基本包装类型的对象在转换为布尔值是值都是true

2.Object()

  1. Object构造函数会将根据传入值的类型返回相应基本包装类型的实例
  2. 把字符串传给Object构造函数,就会创建String的实例;而传入的数值参数会得到Number的实例;传入布尔值就会得到Boolean的实例
var obj=new Object("some text");
alert(obj instanceof String);//true

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

  1. 使用new调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的
  2. 虽然不建议显示地创建基本包装类型的对象,但它们操作基本类型值的能力还是很重要的。而每个基本包装类型都提供了操作相应值的便捷方法
var value="25";
var number=Number(value);//"转型函数"
alert(typeof number);//"number"var obj=new Number(value);//构造函数
alert(typeof obj);//"object"
//变量number中保存的是基本类型的值25,而变量obj中保存的的事Number的实例


源于整理《JavaScript高级程序设计》

基本包装类型和引用类型相关推荐

  1. js基本包装类型和引用类型

    回顾 1.什么是基本类型? 共5个.boolean,string,number,null,undefined. 2.什么是引用类型? 引用类型的值是对象,保存在堆内存中: 引用类型的变量实际上是一个指 ...

  2. JS基础类型和引用类型

    JS基础类型和引用类型脑图

  3. java面向对象(类与对象,局部变量成员变量,基本类型和引用类型作为参数传递)...

    一.类和对象的区别 类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体 可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系.类用于描述 ...

  4. Java Native Interface 二 JNI中对Java基本类型和引用类型的处理

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...

  5. 基本类型和引用类型的值 函数的传递参数

    ECMAScript中函数的传参都是按值传递的. 不管是传基本类型的值还是引用类型的值都是按值传递,访问变量则分按值和按引用两种方式. 向参数传递基本类型的值 被传递的值会被复制(对应文章<基本 ...

  6. javascript变量中基本类型和引用类型的详解解读

    前言: Javascript语言中的变量和其他语言的变量有很大区别,javascript松散类型的本质,决定了它只是在特定时间时间保存特定值得名字而已.由于不存在定义某个变量必须保存何种数据类型值的规 ...

  7. javascript中基本类型和引用类型的区别分析

    大多数人系统学习过的程序设计语言,在这些语言的学习过程中最早学到的几个要点之一就是值类型和引用类型的区别.下面我们来看一下在 JavaScript 中基本数据类型(Primitive Types)和引 ...

  8. JavaScript基本类型和引用类型

    目录 介绍 背景 JavaScript数据类型 基本类型 基本类型的行为如何? 使用typeof运算符 语法类型 为什么null返回对象? 参考类型 创建对象 对象的行为如何? 销毁对象 基本类型和引 ...

  9. 基础类型和引用类型的区别

    基本类型和引用类型的区别 一.基础类型 基本的数据类型有:number string boolean null undefined symbol.基本数据类型的访问是按值访问的,可以对保存的实际值进行 ...

最新文章

  1. python编程解决排队问题_并行排队多处理池,python
  2. django源码分析 LazySetting对象
  3. r语言x%3c-读取文件,R语言读写最灵活的文件——txt文件
  4. python局部变量想作用于全局_python 局部和全局作用域
  5. Solr集群系统架构
  6. SAE 的极致应用部署效率
  7. 卸载VMware Workstation出现错误: vmware-vmx.exe错误
  8. 利用Helm简化Kubernetes应用部署(2)
  9. Port already in use: 1099;
  10. JAVA单向链表实现
  11. VSTS2008和FTS2008的系统要求好高啊~
  12. STL学习笔记 ---- 由set的声明所引发的自定义比较的实现方式 作者:winterTTr(转载请注明)...
  13. 动态定义table每行两列
  14. K-均值聚类算法通俗讲解
  15. python编程求一个数的平方根_用Python求一个数的平方根.
  16. 推理时 cnn bn 折叠;基于KWS项目
  17. 用java写修改器_一些修改器1
  18. 传真百科:电子邮件能取代传真吗
  19. PTA换硬币【满分】
  20. Docker常用的命令

热门文章

  1. Mysql 命令行模式访问操作mysql数据库
  2. html引入icon(矢量图)
  3. mysql注入之limit 注入
  4. intellij idea如何将web项目打成war包
  5. 老婆对不起我错了我爱你
  6. Python编程作业【第一周】(一)
  7. 你了解CPU吗?(五)
  8. SQL server连接查询
  9. java yyyy-mm-dd 日期格式_Java中的日期时间格式化
  10. 查看linux 下交叉编译器安装目录,Linux下安装交叉编译工具链