JavaScript Core -- 包装对象

本文深入解析JavaScript中基本类型转化为包装类型的过程,详细解释String、Number、Boolean三种内置对象的特点与用法,以及如何在代码中正确使用它们的属性和方法。同时,文章还介绍了JavaScript中的内置对象如Date、Array、Math等,并通过实例展示了它们的常见用途。

JavaScript包装对象

JavaScript是面向对象的语言,使用”.”操作符可以访问对象的属性和方法,而对于基本类型(null, undefined, bool, number, string)应该是值类型,没有属性和方法,然而

var s = 'test'; var s1 = s.substr(2);

结果很简单,但是仔细想想还真奇怪,string不是值类型吗!怎么又有属性又有方法的!事实上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而可以让我们调用一些方法。上面的哪行代码实际上是按照下面的代码执行的

var s=new String('test');
var s1=s.substr(2) ;
s=null
引用类型与基本包装类型的主要区别就是对象的生存期。new实例,在执行流离开当前作用域之前保存在内存中;而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间

只要是引用了字符串的属性和方法,JavaScript就会将字符串值通过new String(s)的方式转为内置对象String,一旦引用结束,这个对象就会销毁。所以上面代码在使用的实际上是String对象的length属性和indexOf方法。

同样的道理,数字和布尔值的处理也类似。,null和undefined没有对应对象。既然有对象生成,能不能这样

var s='this is a string';
s.len=10;
alert(s.len);

结果并没有返回10,而是undefined!不是说好了是个对象吗!正如刚才提到第二行代码只是创建了一个临时的String对象,随即销毁,第三行代码又会创建一个新的临时对象(这就是低版本IE频繁处理字符串效率低的一个原因),自然没有len属性。这个创建的临时对象就成为包装对象。没想到一行简单的代码还包含这么多姿势。

内置对象

Boolean

Boolean 对象表示两个值:"true" 或 "false"。当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象。如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成一个原始的布尔值,并且返回这个值,如果省略 value 参数,或者设置为 0、-0、null、""、false、undefined 或 NaN,则该对象设置为 false。否则设置为 true(即使 value 参数是字符串 "false")。

Boolean 对象包括 toString 和 valueOf 方法, Boolean 最常用于在 条件语句中 true 或 false 值的简单判断,布尔值和条件语句的组合提供了一种使用 JavaScript 创建逻辑的方式。

Number

Number对象是一个数值包装器,该对象包含几个只读属性

  • MAX_VALUE:1.7976931348623157e+308 //JavaScript能够处理的最大数
  • MIN_VALUE:5e-324 //JavaScript能够处理的最小数
  • NEGATIVE_INFINITY:-Infiny //负无穷
  • POSITIVE_INFINITY:Infinity //正无穷
  • NaN:NaN //非数字

Number 对象还有一些方法,可以用这些方法对数值进行格式化或进行转换

  • toExponential //以指数形式返回 数字的字符串表示
  • toFixed //把Number四舍五入为指定小数位数的数字
  • toPrecision //在对象的值超出指定位数时将其转换为指数计数法
  • toString //返回数字的字符串表示
  • valueOf //继承自object

String

String 对象是文本值的包装器。除了存储文本,String 对象包含一个属性和各种 方法来操作或收集有关文本的信息,String 对象不需要进行实例化便能够使用。

String 对象只有一个只读的length属性用于返回字符串的长度。String对象拥有很多方法

  • charAt;求第i个位置的字符
  • charCodeAt
  • concat
  • fromCharCode
  • indexOf
  • lastIndexOf
  • match
  • replace
  • search
  • slice
  • split
  • substr
  • substring
  • toLowerCase
  • toUpperCase

包装对象

除了上面三个对象,JavaScript还拥有Date、Array、Math等内置对象,这三个经常显示使用,所以非常熟悉,知道了内置对象就可以看看上面例子是怎么回事儿了。

  Math.max(1,10,0);
  Math.min();
  Math.sqrt();//返回Num的平方根
  Math.abs(num);//返回Num的绝对值
  Math.ceil();//向下舍入
  Math.floor();//向上舍入
  Math.round();//四舍五入
  Math.random();//返回一个(0,1)之间的随机数,利用这个方法,返回某个整数范围内的随机数值 = Math.floor(Math.random()* 总数 + 第一个可能的数)
  例如: var num = Math.floor(Math.random()*10+1);//1~10之间的整数

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值