javascript学习笔记--包装类和String方法

2018-10-21  本文已影响0人  持续5年输出bug

主要点:
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);

打印结果:


image.png

但是写代码时不会使用以上方法,包装类仅仅是浏览器底层自己使用的

虽然方法和属性只能添加给对象,不能添加给基本数据类型,但是:

    var a =123;
    console.log(a);
    console.log(typeof a) ;
    a=a.toString();
    console.log(a);
    console.log(typeof a) 
image.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]);
image.png

1.charAt方法可返回指定位置的字符。
var a="hollo";
var b=a.charAt(1)
console.log(b)

上一篇下一篇

猜你喜欢

热点阅读