基本包装类型

 
3种特殊的引用类型
为了便于操作基本类型值,es还提供了3种特殊的引用类型: Boolean,Number,String。 每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作数据。
 
  1. var s1="some text";
  2. var s2=s1,substring(2);
 
我们知道,基本类型之不是对象,既而他们不应该具有方法。其实为了实现这种直观的操作,后台已经自动完成了一系列的处理。当第二行代码访问s1时,访问过程处于一种读取模式,也就是要从内存中读取这个字符串的值。而在读取模式中访问字符串时,后台都会自动完成下列处理。
1>创建String类型的一个实例
2>在实例上调用特定的方法
3>销毁这个实例、
  1. var s1=new String("some text");
  2. var s2=s1.substring(2);
  3. s1=null;
这也使用与Boolean和String类型.
 

引用类型与基本包装类型的主要区别

引用类型与基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的实例,则值存在于一行代码的执行瞬间,然后立即被销毁。==》这意味着我们不能在运行时向基本类型值添加属性和方法。
  1. var s1="some text";
  2. s1.color="red";
  3. alert( s1.color);
第二行代码视图为字符串s1添加一个color属性。但是,当第3行代码再次访问s1时,其color属性不见了。问题的原因就是第二行创建的String对象在执行第三行代码时已经被销毁了。第3行代码又创建自己的String对象,而该对象没有color属性。
 
 
Object构造函数会像工厂方法,根据传入值的类型返回相应基本包装类型的实例
  1. var obj=new Object("some");
  2. console.log(obj instanceof String );//true
使用new调用基本包装类型的构造函数.,与直接调用同名的转型函数是不一样的。
 
  1. var value="25";
  2. var number=Number(value);//转型函数
  3. alert(typeof number);//number
  4. var obj=new Number(value);//构造函数
  5. alert(typeof obj);//object
 

Boolean类型

 
Boolean类型是与布尔值对应的引用类型。要创建Boolean对象,可以像下面这样调用Boolean构造函数并传入true或false值;
  1. var boolean=new Boolean(true);
  2. alert(boolean.valueOf());//true
 
Boolean类型的实例重写了valueOf()方法,返回基本类型值true或false;重写了toString()方法,返回字符串”true”和”false”。Boolean对象在es中的用处不大,常造成误解。常见的问题就是在布尔表达式中使用Boolean对象
 

布尔值与布尔对象的区别

//建议不要使用Boolean对象
  1. var falseObject=new Boolean(false);
  2. var result=falseObject&&true;//这里是对布尔对象求值
  3. alert(result);//true
  4. var falseValue=false;
  5. result=falseValue&&true;//这里是对布尔值就值
  6. alert(result);//false
在布尔运算中false&&true等于false,可是实例中的这行代码是对falseObject而不是对它的值进行求值。布尔表达式中的所有对象都会被转换成true,因此falseObject对象在布尔表达式中代码的是true。所有true&&true等于true
 
 

Number类型

 
Number是与数字值对应的应用类型。要创建Number对象,可以在调用Number构造函数时向其中传递相应的数值。
var numberObject=new Number(10);
 
与Boolean类型一样,Number类型也重写了valueOf().toLocalString()和toString()方法,
重写后的valueOf()方法返回对象表示的基本类型的数值,另外2个方法则返回字符串形式的数值
  1. var numberObject=new Number(10);
  2. alert(typeof(numberObject.toString()));//String
  3. //可以为toString()方法传递一个表示基数的参数,告诉它返回几进制数值的字符串形式
  4. alert(numberObject.toString(2));//二进制"1010"
  5. alert(numberObject.toString(8));//"12"
  6. alert(numberObject.toString(10));//"10"
  7. alert(numberObject.toString(16));//"a"
 

toFixed()

除了继承来的方法外,Number类型还提供了一些将数值格式化为字符串的方法。
toFixed() 方法会按照指定的小数位返回数值的字符串表示
  1. var num=10;
  2. var num2=10.005
  3. alert(num.toFixed(2));//10.00
  4. alert(num2.toFixed(2));//10.01//应为这里要保留2位,实际有3位,就会四舍五入,很适合处理货币。
  5. alert(typeof num.toFixed(2));//String
//ie8及之前的版本不能正确四舍五入范围在{(-0.94,-0.5],[0.5,0.94)}之间的值,对于这个返回的值,ie会返回0而不是-1或1。

toExponential()

格式化数值,返回以指数表示法表示的数值的字符串形式,该方法也就收一个参数,指定输出结果中的小数位数
  1. var num=10;
  2. alert(num.toExponential(1));//1.0e+1
  3. alert(num.toExponential(2));//1.00e+1
 
不建议直接实例化Number类型,原因与Boolean一样
  1. var numberObject=new Number(10);
  2. var number=10;
  3. alert(typeof numberObject);//object
  4. alert(typeof number);//Number
  5. alert(numberObject instanceof Number);//true
  6. alert(number instanceof Number);//false

String类型

String类型是字符串的对象包装类型
var stringObject=new String(“hello world”);
String对象的方法也可以在所有基本的字符串中访问到。其中,继承的valueOf(),toLocalString(),toString(),都返回对象所表示的基本字符串值。
String类型的每个实例都有一个length属性,表示字符串的长度
  1. var string="hello world"
  2. alert(string.length);//11

字符方法charAt()和charCodeAt();

用于访问字符串中特定字符的方法:charAt()和charCodeAt();
//都接收1个参数,
charAt()方法返回给定位置的字符。
  1. var string="hello world";
  2. alert(string.charAt(1));//e

js基本包装类型的更多相关文章

  1. JS基本包装类型之三(String)

    1. 基本数据类型和基本包装类型 这里以字符串类型来讲解基本数据类型和基本包装类型. JS中存在基本数据类型String(typeof返回"string"), 也存在基本包装数据类 ...

  2. js基本包装类型及Math对象(八)

    一.基本包装类型[继承于Object类型]1.Number().String().Boolean()引用数据类型[包装类型]分别对应的基本数据类型为number.string.boolean. 2.当 ...

  3. js 基本包装类型 String

    为了操作基本类型值,ECMAScript提供了三个特殊的引用类型: Boolean , Number , String 举例: var s1 = "some text"; var ...

  4. js之基本包装类型

    为了便于操作“基本类型值”,JS 提供了 三个 特殊的引用类型:Boolean.Number.String.这些类型和其他引用类型相似,但同时 也具备 与各自基本类型相应的特殊行为. 实际上:每当读取 ...

  5. JS 学习笔记--10---基本包装类型

    练习中使用的浏览器是IE10,如果有什么错误或者不同意见,希望各位朋友能够指正,练习代码附在后面 1.基本包装类型:    首先是基本类型,但又是特殊的引用类型,因为他们可以调用系统的方法,这种类型就 ...

  6. JS中基本类型与包装类型的关系

    对于JS中一些类型的转化的东西,自己测试并得出的结论,有错误的地方请大大们留言. 不多废话,直接贴代码,测试请直接拷贝全部代码: <!DOCTYPE html> <html> ...

  7. JavaScript--我发现,原来你是这样的JS(再说引用类型,基本包装类型与个体内置对象)

    一.介绍 本篇是续上一篇的,引用类型的后篇,本篇主要是说基本包装类型和个体内置对象.如果你能收获一些知识,那我很高兴,很满足,哈哈哈,希望大家能愉快看完.如果你想学好一门技术,要不忘初心,方得始终. ...

  8. js的基本包装类型

    基本包装类型(包装对象): 先看下以下代码: var s1 = "helloworld"; var s2 = s1.substr(4); 上面我们说到字符串是基本数据类型,不应该有 ...

  9. js基础-基本包装类型

    var t = 13; t.toString(); //t是一个简单数值类型 现在有了方法 toString 对象类型的方法 //数值类型有对应的包装类型 var t1 =new Number(333 ...

随机推荐

  1. sass揭秘之@mixin,%,@function scss基本使用及操作函数

    sass揭秘之@mixin,%,@function: 地址:https://www.w3cplus.com/preprocessor/sass-mixins-function-placeholder. ...

  2. python之数据序列转换并同时计算数据

    问题 你需要在数据序列上执行聚集函数(比如 sum() , min() , max() ), 但是首先你需要先转换或者过滤数据 解决方案 一个非常优雅的方式去结合数据计算与转换就是使用一个生成器表达式 ...

  3. spring基于注解的事务控制

    pom配置: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...

  4. Socket网络编程--初级

    如果想开发一个基于TCP/IP协议的网络程序,应用程序之间则主要通过Socket交换数据 .NET Socket支持四种编程模式 1.居于阻塞模式的Socket编程 2.”非阻塞“模式的Socket编 ...

  5. 微信小程序のwxs语言

    一.wxs介绍 wxs是微信小程序自身的脚本语言,用来过滤和计算.wxs可以通过文件可模块标签来定义 文件需要.wxs后缀文件 二.实例 <wxs module="test1" ...

  6. nginx + gunicorn + django 2.0 踩坑

    部署踩坑 部署踩坑提前准备服务器端准备安装nginx使用uwsgi部署使用gunicorn配置配置nginx配置django中的路径url 提前准备 在本地能够 python(3) manage.py ...

  7. MHA-Atlas-MySQL高可用(上)

    MHA-Atlas-MySQL高可用(上) 链接:https://pan.baidu.com/s/17Av92KQnJ81Gc0EmxSO7gA 提取码:a8mq 复制这段内容后打开百度网盘手机App ...

  8. day06 python is == 编码 解码

    day06 python   一. is 和 == 的区别     == :比较, 判断, 比较的是值: 可以比较数字, 字符串, 列表, 元组, 字典,等     is :是 比较, 比较的是内存地 ...

  9. C++中的delete加深认识

    delete操作: 我们在删除一个指针之后,编译器只会释放该指针所指向的内存空间,而不会删除这个指针本身. 1.假如你不去释放,那么该区域的内存始终不能被其他数据所使用.2.指向该内存的指针是个局部变 ...

  10. js中如何避免动态引入重复资源

    创建存储数据的数组或者对象: 每次调用方法的时候,往里面添加资源对象,包括路径: 每次调用的时候遍历此路劲是否存在,如存在,就调用此资源对象的promise进行操作. 可避免资源未加载完成就执行的情况 ...