JavaScript高级程序设计读书笔记(9)——基本包装类型和内置对象

基本包装类型

1、什么是基本包装类:
下面看一个例子:

var str="hello";
str.length;//5

注:这里定义了一个基本类型值,前面提到过,基本类型值是没有属性和方法的,那么str为什么可以使用length这个属性呢?

这是因为JavaScript中除了有Object、Array、Function这三大引用类型外,还提供了Boolean、String、Number这三个引用类型(基本包装类型),他们提供一些属性和方法,以便于与之同名的基本类型的使用和操作。但与一般引用类型不同的是,每当读取到一个基本类型值得时候,就会在后台创建一个与之对应的基本包装类型的对象,从而提供一些方法和属性来操作这些基本类型。

所以上面的代码进行了如下操作:
1、创建一个String类型的实例;
2、在实例上调用指定方法
3、销毁这个实例;
上述三个步骤同样适用Boolean和Number类型对应的布尔值和数字值。

引用类型和基本包装类型的区别就是对象的生存周期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都会储存在内存当中。而自动创建的基本包装类的对象只会存在于代码执行的瞬间,然后立即被销毁,所以说,我么不能为基本类型值添加属性和方法。看下面的例子:
var str="hello";
str.color="red";
console.log(str.color);//undefined

下面详细介绍着三种基本包装类型:

一、Boolean类型
1、创建一个Boolean对象;

var booleanObj=new Boolean(true);

虽然Boolean对象在JavaScript中用处不大;但是要注意区别基本类型和引用类型的区别:
1、typeof,前者是boolean,后者是Object;
2、instanceof,前者是false,后者是true;

二、Number类型;
1、创建一个Number对象;

var numObj=new Number();

2、常用属性和方法:

  • toString(),传递一个表示基数的参数,他会返回几进制数值的字符串形式;
var num=10;
console.log(num.toString());//10
console.log(num.toString(2));//"1010"
console.log(num.toString(8));//"12"
console.log(num.toString(10));//"10"
console.log(num.toString(16));//"a";
  • toFixed(),传递一个参数,按照指定数值的小数位返回数值的字符串形式,具有自动舍入的特性
var num=10.005;
console.log(num.toFixed(2));//10.00
  • toExponential(),用于格式化数值,返回以指数表示法,接受的参数为小数位数;
var num=10;
console.log(num.toExponential(1));//"1.0e+1";
  • toPrecision(),返回固定大小格式,接收一个参数,表示数值的所有数字的位数;
var num=99;
alert(num.toPrecision(1));//1e+2
alert(num.toPrecision(2));//99
alert(num.toPrecision(3));//99.0;

三、String类型;
1、创建String对象;

var strObj=new String("hello world");

2、常用属性和方法

  • String类型的实例都有length的属性,表示字符串中包含多少个字符,空格也算一个字符;

  • 字符方法:stringValue()、charAt()和charCodeAt(),这两个方法都接收一个参数,即基于0的字符位置;根据参数,前者返回的是字符,后者返回的是字符编码;

var str="hello";
alert(str.charAt(1));//"e";
alert(str.stringValue[1]);//"e"
alert(str.charCodeAt(1));//"101";
  • 字符串操作方法:
    concat():将一个或多个字符串拼接起来,可以接受任意个参数,
var s1="hello ";
var s2=s1.concat("world","!");
alert(s2);//"hello world!";

slice()、substr()、substring():截取原始字符串,创建一个新的字符串,原始字符串不会改变,都可以接收1到2个参数。

slice()和substring()第一个参数表示开始截取的位置,第二个参数是指截取最后一位字符的后面的位置;
substr()第二个参数指的是截取字符的个数;

在传递这些方法的参数是负数的情况下,他们的行为就不同了:
slice()会将传入的负数与字符串的长度相加
substr()会将第一个参数的值与字符串的长度相加,第二个参数转换成0;
substring()会将所有参数转换的成0;

  • 字符串位置方法
    indexof()和lastIndexof()这两个方法都是从一个字符串中搜索给定的字符串,然后返回位置,都可以接受两个参数,第一个参数是需要搜索的字符,第二个参数与是从字符串的哪个位置开始;前者的搜索方向是自左向右,后者的搜索方向是自右向左。
var str="hello world";
alert(str.indexof("o",6));//7;
alert(str.lastIndexof("o",6));//4

trim(),创建一个字符串副本,删除前置和后缀的空格;

  • 字符串大小写转换:
    toLowerCase(),toUpperCase();
    toLocaleLowerCase(),toLocaleUpperCase();这两种方法针对特定地区使用;

  • LocaleCompare()方法,用于比较两个字符串在字母表里的位置
    如果目标字符串排在字符串参数之前,返回负数;
    如果目标字符串排在字符串参数之后,返回正数;
    如果目标字符串等于字符串参数,返回0;

  • fromCharCode(),接受一个或多个字符编码,返回字符串;

alert(String.fromCharCode(104,101,108,108,111));//"hello"

内置对象

一、Global对象;
Global对象表现为window对象;
1、Global对象的encodeURI()和encodeURIComponent()方法都可以对URI进行编码以便发送给浏览器;
2、eval()方法,它值接收一个参数,当做实际的代码来解析然后返回结果到原来的位置上;eval()内创建的变量或函数都不会提升,他们只在eval()执行是创建;

二、Math对象
1.min()和max()方法:

var max=Math.max(1,2,3,4);
alert(max);//4

结合apply()方法可以找到数组中的最值

var arr=[1,2,3,4];
var max=Math.max.apply(Math,arr);//参数是作用域和参数数组
alert(max);//4

2、舍入方法:
Math.ceil(),向上舍入;
Math.floor(),向下舍入;
Math.round(),标准舍入;

3、random(),返回一个0到1之间的随机数;

value=Math.floor(Math.random()*可能值的最大数+第一个可能的值);
value=Math.floor(Math.random()*10+1)这里会返回一个1~10之间的随机数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值