主要点:
1.浏览器提供的三个包装类String()Number()Boolen()
2.包装类是浏览器底层自己使用的,将基本数据类型临时转换成对象
3.字符串的存储原理:var a ="hollo world" => ["h","o","o","l“...]
基本数据类型:
String,Boolen,Number,Null,Undefined,
引用数据类型:
Object
js中为我们提供了三个包装类,可以通过这三个包装类将数据类型转换为对象,
String():可以将字符串转换为String对象;
Number():可以将数字转换为Number对象;
Boolen():可以将布尔值转换为Boolen对象;
var a=123;
var num =new Number(3);
console.log(typeof num);
console.log(num);
console.log(typeof a);
console.log(a);
打印结果:
![](https://img.haomeiwen.com/i13311739/e01e0bd0c62bbfe6.png)
但是写代码时不会使用以上方法,包装类仅仅是浏览器底层自己使用的
虽然方法和属性只能添加给对象,不能添加给基本数据类型,但是:
var a =123;
console.log(a);
console.log(typeof a) ;
a=a.toString();
console.log(a);
console.log(typeof a)
![](https://img.haomeiwen.com/i13311739/e7c071fc2ef73aa2.png)
以上里不报错,是因为当对基本数据类型的值调用属性和方法时,浏览器会临时使用包装类将其转换为对象,再去调用对象的属性和方法即以上代码块实际为:
将a 转换为Number对象
var a =new Number();
然后去调用toString()方法,在这里调用完以后将其转换为基本数据类型(临时性)
a=a.toString();
临时性的意思
以下代码不报错,但是打印undefined:
var a= 123;
a.hollo="你好";
console.log(a.hollo)
原因在于,,首先将a转换为对象 var a= new String();然后将holl 属性添加到a 对象中,然后销毁;当 console.log(a.hollo)时将原本的 基本数据类型a转换为对象,这两次转换的对象是截然不同的两个对象(对象内存地址不同,堆内存原理)
字符串存储的原理
var a ="holl"
console.log(a.lenght);
console,log(a[1]);
![](https://img.haomeiwen.com/i13311739/0c7fb86960260ef6.png)
1.charAt方法可返回指定位置的字符。
var a="hollo";
var b=a.charAt(1)
console.log(b)
网友评论