回顾js中的数据类型,包括以下几种:
基本数据类型:String Number Boolean Null Underfined
引用数据类型:Object
包装类
js中的包装类是什么?包装类型是指在执行代码的一瞬间把数据包装成引用数据类型。js底层内置的三大构造函数:String Number Boolean。通过这三个包装类,我们可以将基本数据类型的数据转换为对象。
String(): 可以将基本数据类型字符串转换为String对象。
Number(): 可以将基本数据类型的数字转换为Number对象。
Boolean():可以将基本数据类型的布尔值转换为Boolean对象。
为什么需要包装类?
js中的三大基本数据类型(string number boolean),本是无法调用任何属性或方法的(length除外),但针对其基本数据类型的重要性和使用性,创建包装类来增强这三者的功能,使开发者能够更简单便捷的进行开发。
包装类的作用
基本数据类型不能添加属性和方法,方法和属性只能添加给对象,不能添加给基本数据类型。当我们对一些基本数据类型的值去调用属性和方法时,浏览器会临时使用包装类将其转换为对象,然后在调用对象的属性和方法;调用完以后,再将其转换为基本数据类型。
注意:同样的包装类,每一次调用,都会产生不同的对象(对象地址的唯一性)
示例:
var s = 123;
//浏览器临时隐式转换 s = new Number(123) 使其为对象1(123),这样才能调用原型方法tostring。
s = s.toString();
//转换完成后销毁对象123,再将其转换为基本数据类型。
//此时又临时隐式转换 s = new Number(123) 使其为新对象2(123,此时对象地址为新地址)。
s.hello = "你好";
转换完成后销毁对象2,再将其转换为基本数据类型。
//此时还是临时隐式转换 s = new Number(123) 使其为新对象3(123,此时对象地址为新地址),此时对象地址不同,所以里面的hello属性也就自然找不到。
console.log(s.hello);
转换完成后销毁新对象3,再将其转换为基本数据类型。
常见字符串的方法
在底层字符串是以字符数组的形式保存的,一个字符相当于数组中的一个元素,也包含空格。比如:hello ==> ["h","e","l","l","o"]
length | 获取字符串的长度。 |
charAt() | 返回指定位置的字符(根据索引获取指定的字符),作用和.[]一样。 |
charCodeAt() | 返回在指定的位置的字符的Unicode编码。 |
fromCharCode() | 根据字符编码去获取字符。该方法必须用原型对象String调用。 |
concat() | 连接两个或多个字符串。作用和+一样 |
indexof() | 检索一个字符串中是否含有指定内容。如果字符串中含有该内容,则会返回其第一次出现的"索引"。如果没有找到指定内容,则返回-1。可以指定第二个参数,指定开始查找的位置。 |
lastIndexOf() | 该方法的用法和indexOf()一样,不同的是indexOf是从前往后找,而lastIndexOf是从后往前找。 |
slice()、substring()、substr() | 可以从字符串中截取指定的内容。不会影响原字符串,将截取到的内容返回。 |
split() | 可以将一个字符串拆分为一个数组。参数:需要一个字符串作为参数,将会根据该字符串去拆分数组。注意:如果传递一个空串作为参数,则会将每个字符都拆分为数组中的一个元素。 |
toUpperCase() | 将一个字符串转换为大写并返回。 |
toLowerCase() | 将一个字符串转换为小写并返回。 |
slice()、substring()、substr()方法解析:
相同点:
参数:第一个,开始位置的索引(包括开始位置) 。第二个,结束位置的索引(不包括结束位置,除了substr())。
注意:如果省略第二个参数,则会截取到后边所有的。
不同点:
1、slice()可以传递一个负数作为第二个参数,负数的话将会从后边往前计算。
2、subString()不能接受负值作为参数,如果传递负值,则默认变为0,且自动调整参数位置(第二个参数小于第一个则自动交换)。
3、substr()第二个参数表示截取的长度。
示例:
<script>
var str = "hello world!"
console.log(str.length);
console.log(str.charAt(1));
console.log(str.charCodeAt(6))
console.log(String.fromCharCode(119));
console.log(str.concat(" hello"," everyone!"))
console.log(str.indexOf("w"));
console.log(str.lastIndexOf("w"));
console.log(str.slice(0,3));
console.log(str.slice(0,-3));
console.log(str.substring(0,3));
// 相当于: console.log(str.substring(0,1));
console.log(str.substring(1,-3));
console.log(str.substr(2,3));
console.log(str.split("o"));
console.log(str.split(""));
console.log(str.toUpperCase());
console.log(str.toLocaleLowerCase());
</script>