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类型
不建议使用。

浙公网安备 33010602011771号