2018-11-19

打卡时间:16:30-18:30

Number类型

Number是与数字值相对应的引用类型。要创建Number对象,可以在调用Number构造函数时向其中传递相应的数值。

var numberObject = new Number(10);

Number也重写了valueOf()、toLocaleString()和toString()方法。重写后的valueOf()方法返回对象表示的基本类型的数值,另外两个方法则返回字符串形式的数值。

除了继承的方法之外,Number类型还提供了一些用于将数值格式化为字符串的方法。
其中,toFixed()方法会按照指定的小数位返回数值的字符串表示。例:

var num = 10;
alert(num.toFixed(2));//10.00

如果数值本身包含的小数位比指定的还多,那么接近指定的最大小数位的值就会舍入。例:

var num = 10.005;
alert(num.toFixed(2));//10.01

能够自动舍入的特征,使得toFixed( )方法很适合处理货币值。

另外toExponential( )方法可用于格式化数值,该方法返回以指数表示法,表示的数值的字符串形式。toExponential( )也接收一个参数,而且该参数同样也是指定输出结果中的小数位数。例:

var num = 10;
alert(num.toExponential(1));//1.0e+1
//不过这么小的数值一般不必使用e表示法。

对于一个数值来说,toPrecision( )方法可能会返回固定大小(fixed)格式,也可能返回指数(exponential)格式。toPrecision()接受一个参数,即表示数值的所有数字的位数(不包括指数部分),例:

var num = 99;
alert(num.toPrecision(1));//1e+2
alert(num.toPrecision(2));//99
alert(num.toPrecision(3));//99.0
//toPrecision()会根据要处理的数值决定到底是调用toFixed()还是调用toExponential()。
//这三个方法都可以通过向上或者向下舍入

与Boolean对象类似,Number对象也以后台方式为数值提供了重要的功能。但是不建议直接实例化Number类型。就是在使用typeOf和instanceof操作符测试基本类型数值与引用类型数值时,得到的结果完全不同。例:

var numberObject = new Number(10);
var numberValue = 10;
alert(typeof numberObject);//object
alert(typeof numberValue);//number
alert(numberObject instanceof Number);true
alert(numberValue instanceof Number);/false
//在使用typeof操作符测试基本类型数值时,始终会返回“number”,而在测试Number对象时,则会返回“object”

Number对象是Number类型的实例,而基本类型的数值则不是。

String类型

String 类型是字符串的对象包装类型,可以像下面这样使用String构造函数来创建:
var stringObject = new String('Hello world');

String类型的 每个实例都有一个length属性,表示字符串中包含多个字符。例:

var stringValue = "hello world";
alert(stringValue.length);//11

String类型提供了很多方法,用于辅助完成对ECMAScript中字符串的解析和操作。
1、字符方法

两个用于访问字符串中的 特定字符的方法是:charAt()和charCodeAt()。这两个方法都接受一个参数,即基于0的字符位置。
charAt()是以单字符字符串的形式返回给定位置的那个字符,而charCodeAt()返回的事字符编码。例:

var stringValue = "hello world";
alert( stringValue.charAt(1));//e(字符串)

var stringValue = "hello world";
alert( stringValue.charCodeAt(1));//101(字符编码,也就是小写字母“e”的字符编码)

ECMAScript5还得定义了另一个访问个别字符的方法。使用方括号加数字索引来访问字符串中的特定字符,例:

var stringValue = "hello world";
alert(stringValue[1]);//e

2、字符串操作方法
◆concat( ) 用于将一或多个字符拼接起来,也可以接受任意多个参数,返回拼接得到的新字符串。例:

var stringValue = "hello  ";
var result = stringValue.concat("world","!");
alert(result);//hello world !
alert(stringValue );//hello

虽然concat()是专门用来拼接字符串的方法,但实践中使用更多的还是加号操作符(+)。大部分情况下,加号操作符比concat()方法更简单

ECMAScript还提供了三个基于子字符串创建新字符串的方法:slice( )、substr()和substring()。这三个方法都会返回被操作字符串的一个子字符串,而且也都接受一或两个参数。第一个参数指定子字符串的开始位置,第二个参数(在指定的情况下)表示子字符串到哪里结束。例:

var stringValue = "hello world";
alert(stringValue.slice(3));//lo world
alert(stringValue.substring(3));//lo world
alert(stringValue.substr(3));//lo world
alert(stringValue.slice(3,7));//lo w
alert(stringValue.substring(3,7));//lo w
//slice()和substring()的第二个参数是子字符串最后一个字符后面的位置。
//world中的 “o”位于位置7,因此结果不包含o
alert(stringValue.substr(3,7));//lo worl
//substr()的第二个参数是指定的则是返回的字符个数

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

var stringValue = "hello world";
alert(stringValue.slice(-3));//rld
alert(stringValue.substring(-3));//hello world
alert(stringValue.substr(-3));//rld
alert(stringValue.slice(3,-4));//lo w
alert(stringValue.substring(3,-4));//hel
alert(stringValue.substr(3,-4));//""(空字符)

3、字符串位置方法
有两个可以从字符串中查找子字符串的方法:indexOf()和lastIndexOf()。这两个方法都是从一个字符串中搜索给定的子字符串,然后返子字符串的位置,如果没有找到子字符串,则返回-1.
这两个方法的区别在于:indexOf()方法是从开头向后搜索,lastIndexOf()方法则是从末尾向前搜索,例:

var stringValue = "hello world";
alert (stringValue.indexOf("o"));//4
alert (stringValue.lastIndexOf("o"));//7

alert (stringValue.indexOf("o",6));//7
alert (stringValue.lastIndexOf("o",6));//4

4、trim( )方法
ECMAScript5为所有字符串定义了trim()方法。这个方法会创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果。例:

var stringValue = "   hello world   ";
var trimmedStringValue = stringValue.trim();
alert(stringValue );//   hello world   
alert(trimmedStringValue );//hello world

你可能感兴趣的:(2018-11-19)