JS 基本包装类型

基本包装类型

 

每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象(包装对象),从而让我们能够调用一些方法来操作这些数据。

可以使用基本包装类型提供的方法便捷地操作数据,但不建议直接实例化基本包装类型。 

 

String类型

String类型是字符串的对象包装类型,可以使用String构造函数来创建。

1 var stringObject = new String();

示例:

1 var x = "Hello";
2 var y = new String("Hello");
3 console.log(typeof x);    //string
4 console.log(typeof y);    //object
5 console.log(x instanceof String);    //false
6 console.log(y instanceof String);    //true

 

使用new操作符调用基本包装类型的构造函数,与直接调用同名的转型函数是不同的。

1 var x = 123;
2 console.log(typeof String(x));    //string
3 console.log(typeof new String(x));    //object

 

String对象的方法可以在所有基本的字符串值中访问到;其中,继承而来的valueOf()toLocaleString()toString()方法,都返回对象所表示的基本字符串值。 

1 console.log(x.valueOf() === x.toString());           //true
2 console.log(x.valueOf() === x.toLocaleString());     //true
3 console.log(x.toString() === x.toLocaleString());    //true

但是

1 console.log(x.valueOf() === x.toString() === x.toLocaleString());    //false

这三个方法两两全等,应该三个都全等,可为什么返回false?

 

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

当声明一个变量,并赋值为一个字符串,比如这样:

1 var z = "Hello World";

字符串是一个基本数据类型,不是一个引用类型的值,不应该存在属性和方法;

然而:

1 console.log(z.length);    //11

我们却能获取它的length属性的值。

这其实是因为:

当我们对z进行属性或者方法操作时:

(1)后台会从内存中读取z的值,并以此值创建一个String类型的实例;

(2)然后在这个实例上调用属性或者方法;

(3)操作完成之后即刻销毁这个实例。

 

字符方法

charAt()方法、charCodeAt()方法,用于访问字符串中特定字符;接收一个参数,即基于0的字符位置。

charAt()方法,返回给定位置的那个字符;charCodeAt()方法,返回字符编码。

也可以使用方括号加数字索引来访问字符串中的特定字符(IE7及更早版本使用方括号访问会返回undefined,其它浏览器都支持方括号访问)。

示例:

1 var x = "Hello World";
2 console.log(x.charAt(4));    //o
3 console.log(x.charCodeAt(4));    //111
4 console.log(x[4]);    //o

 

字符串操作方法

concat()方法,将一个或多个字符串拼接起来,返回拼接得到的新字符串(实际上用 + 会更方便)。

1 var x = "hello";
2 var y = x.concat(", My name is ", "CC");
3 var z = x + ", My name is " + "CC";
4 
5 console.log(x);    //"hello"
6 console.log(y);    //"hello, My name is CC"
7 console.log(z);    //"hello, My name is CC"

 

slice()方法、substring()方法,接收两个参数:起始位置(包含在内),结束位置(不包含在内);当结束位置小于起始位置时,返回一个空字符串。

substr()方法,接收两个参数:起始位置(包含在内),字符个数。

1 var x = "Hello World";
2 console.log(x.slice(1,4));    //ell
3 console.log(x.substring(3,8));    //lo Wo
4 console.log(x.substr(6,3));    //Wor

 

当参数为负数时:

slice()方法会将传入的负值与字符串长度相加;

substring()方法会将所有的负值都转换为0;

substr()方法会将第一个负值加上字符串的长度,将第二个负值变成0。

字符串操作方法对原字符串没有任何影响,返回的只是原字符串的子字符串,是一个string类型的数据。

 

字符串位置方法

indexOf()lastIndexOf()方法,从字符串中查找给定的子字符串,然后返回子字符串的位置;如果没有给定的子字符串,则返回-1。

接收两个参数:给定的子字符串,(可选)搜索的起始位置。

1 var x = "hello world";
2 console.log(x.indexOf("o", 6));    //7
3 console.log(x.lastIndexOf("o", 6));    //4

 

遍历一个字符串,找到其中所有的"e",并把索引值保存在一个数组中;如下:

1 var x = "I never heard this before.";
2 var y = new Array();
3 var z = x.indexOf("e");
4 while(z !== -1) {
5     y.push(z);
6     z = x.indexOf("e",z + 1);
7 };
8 console.log(y);    //[3,5,9,20,24]

 

trim()方法

trim()方法,创建一个字符串的副本,删除前置及后缀的所有空格,然后返回这个新的字符串。

1 var x = "    hello world  !  ";
2 var y = x.trim();
3 console.log(x);    //"    hello world  !  "
4 console.log(y);    //"hello world  !"

 

 

字符串大小写转换方法

toLowerCase()方法、toUpperCase()方法;

toLocaleLowerCase()方法、toLocaleUpperCase()方法;

 

字符串模式匹配方法

有待补充。。。

 

localeCompare()方法

localeCompare()方法比较两个字符串:

如果字符串在字母表中的位置应该在字符串参数之前,则返回一个负数(一般为-1);

如果字符串在字母表中的位置应该在字符串参数之后,则返回一个正数(一般为1);

如果两个字符串相等,则返回0。

1 var x = "green";
2 console.log(x.localeCompare("blue"));    //1
3 console.log(x.localeCompare("red"));    //-1
4 console.log(x.localeCompare("green"));    //0

 

formCharCode()方法

fromCharCode()方法接收一个或多个字符编码,然后将它们转换成一个字符串。从本质上看,这个方法执行的是与charCodeAt()方法相反的操作。

1 var hello = String.fromCharCode(104, 101, 108, 108, 111);
2 console.log(hello);    //hello
3 console.log(hello.charCodeAt(0));    //104

 

Number类型

1 var numberObject = new Number();

 

valueOf()方法返回对象表示的基本类型数值;toString()toLocaleString()返回相应的字符串形式的数值。

对于toString()方法,还可以传递一个参数,指定返回几进制数值的字符串形式。

1 var x = 100;
2 console.log(x.valueOf());       //"100"
3 console.log(x.toString(16));    //"64"

 

toFixed()方法会按照指定的小数位返回数值的字符串表示。

1 var x = 100;
2 console.log(x.toFixed(2));    //"100.00"
3 
4 var y = 3.145;
5 console.log(y.toFixed(2));    //"3.15"

标准支持0~20位小数;可以更多。 

 

toExponential()方法返回以科学计数法表示的数值的字符串形式;接收一个参数,指定输出结果中的小数位数。

1 var x = 12345;
2 console.log(x.toExponential(4));    //"1.2345e+4"

 

toPrecision()方法,接收一个参数:返回字符串形式的数值的所有数字的位数。

1 var x = 99;
2 console.log(x.toPrecision(1));    //"1e+2"
3 console.log(x.toPrecision(2));    //"99"
4 console.log(x.toPrecision(3));    //"99.0"

典型实现可以支持1~21位小数;可以更多。

 

Number对象以后台方式为数值提供了重要的功能,我们可以直接使用;但不建议直接实例化Number类型。

 

Boolean类型

不建议使用。

 

posted @ 2016-07-27 18:00  Aaron_Xiao  阅读(326)  评论(0)    收藏  举报