包装类
在JS中,提供了3个包装类,通过它们可以将基本数据类型转换成对象
- Strint()
- Number()
- Boolean()
var num1 = 3;
console.log(typeof num1);//number
var str1 = "hello";
console.log(typeof str1);//string
var bool = true;
console.log(typeof bool);//boolean
//开发的时候不用
var num = new Number(3);
console.log(typeof num); //object
var str = new String("hello");
console.log(typeof str); //object
var bool = new Boolean(true);
console.log(typeof bool); //object
var num = new Number(3);
num.hello = "aa";
console.log(num.hello);// aa
var a = 3;
a.hello = "bb";
console.log(a.hello);//undefined
var num = new Number(3);
var num2 = new Number(3);
var num3 = 3;
console.log(num == num2);//false
console.log(num == num3);//true
console.log(num === num3);//false
方法和属性只能添加个对象,不能添加给基本数据类型,当我们对一些基本数据类型的值去调用属性和方法,浏览器会临时使用包装类将其转换为对象,然后调用对象的属性和方法,调用完以后给转为基本数据类型
var s = 123;
s = s.toString();
console.log(s);//123
console.log(typeof s);//string
var s = 123;
s = s.toString();
s.hello = "aa";//转换一次
console.log(s.hello);//undefined 转换第二次,和第一次不是同一个
console.log(typeof s);//string 转换回基本数据类型
字符串的方法
var str = "Hello!";
// 在底层字符串是以字符串数组的形式保存的 ["H","e","l","l","o","!"]
console.log(str.length);//6
var str1 = str.charAt(0);//根据索引 返回字符串指定位置的字符
console.log(str);//Hello! 对原字符串不会有影响
console.log(str[2]);//l
console.log(str1);//H
console.log(str.charCodeAt(0)); //72 根据索引 返回字符串指定位置字符的unicode编码
console.log(String.fromCharCode(72));//H 根据字符编码来获取字符 注意通过构造函数String来调用
//concat()连接字符串
var str = "Hello!";
result = str.concat("你好");
console.log(result);//Hello!你好
//indexof()检索一个字符串是否含有指定内容,若有返回第一次出现的索引,若没有返回-1
console.log(str.indexOf("e"));//1 返回字符在字符串中的索引号
console.log(str.indexOf("u"));//-1
//indexof()可以指定第二个参数,指定开始查找的位置
str = "hello haiti"
result = str.indexOf("h", 1);
console.log(result);// 6
//lastIndexOf()从后往前找,也可以指定第二个参数,指定开始往前查找的位置
result = str.lastIndexOf("h");
console.log(result);// 6
/*slice()
- 可以从字符串中截取指定的内容
- 不会影响原字符串,而是将截取到的内容返回
- 两个参数(开始位置的索引,结束后一个位置的索引)包括第一个参数,不包括第二个参数
- 若省略第二个参数,则截取到后边所有的字符
- 若第二个参数是负数,-1 表示倒数第一个结束,-2表示倒数第二个结束
*/
str = "abcdefghijkl";
str.slice(0, 2);
console.log(str);//abcdefghijkl
result = str.slice(1, 2);
console.log(result);//b
/*substring()
- 可以来截取一个字符串,可以slice()类似
- 参数,(开始位置的索引,结束位置的后一个)
- 第二参数不接受负数,若为负数默认是0
- 会自动调节参数的位置,若第二个参数小于第一个参数,会自动交换位置(0,1)==(1,0)
*/
str = "abcdefghijkl";
result = str.substring(0, 3);
result1 = str.substring(3, 0);
console.log(result+"与"+result1);//abc与abc
/*substr()
- 用来截取字符串
- (开始位置索引,截取的长度)
*/
str = "abcdefghijkl";
console.log(str.substr(3, 2));//de
/*split()
- 可以将一个字符串拆分成一个数组
- 参数(字符串),将会根据字符串去拆分数组
*/
str = "abc@def@gh@dj@kl";
result = str.split("@");
console.log(Array.isArray(result));//true 是数组
console.log(result);//['abc', 'def', 'gh', 'dj', 'kl']
console.log(result[1]);//true
str = "asdc";
result = str.split();
console.log(result);//['asdc']
result1 = str.split("");
console.log(result1);//['a', 's', 'd', 'c']