js基本类型 Undefined,Null,String,Number,Boolean
js基本包装类型 String,Number,Boolean
基本类型不是对象,没有属性和方法。但是有三个很特殊的基本类型,String,Number,Boolean,他们有自己的包装对象。包装对象就是对象,有自己的属性和方法,只是包装对象是在后台调用的
var s1 = "some text";
var s2 = s1.substring(2); //提取子字符串,起始位置2,最终位置是母字符串的末尾
/* 这是在后台发生的
var _s1 = new String("some text"); 找到对应的包装对象类型,然后通过包装对象创建出一个和基本类型值相同的对象
var s2 = _s1.substring(2); 这个对象就可调用包装对象下的方法,并赋值给s2
_s1 = null; 销毁这个包装对象
*/
console.log(s2); //me text
注释里面的过程都是在后台发生的,就是当3种基本类型(String,Number,Boolean)调用方法时,会在找到他们对应的基本包装对象类型,再调用该包装类型的方法并赋值给该赋值的变量,最后销毁该包装对象
所以基本包装类型在被调用一瞬间就被销毁了,而引用类型在执行流离开当前作用域之前一直保存在内存中,对象的生存期不同
所以我们也无法直接给基本类型添加属性,方法,只能运用基本类型对应基本包装类型下原有的方法
var s1 = "some text";
s1.color = "red";
/*
var _s1 = new String("some text"); //找到对应的包装对象类型,然后通过包装对象创建出一个和基本类型值相同的对象
_s1.color = "red"; //通过这个对象调用包装对象下的方法,其实并没有这个方法
_s1 = null; //包装对象被销毁
*/
console.log(s1.color); //undefined
/*
又有s1.color,所以重复以上操作,但是对应的包装对象下没有该方法,所以其值是undefined
*/
给基本类型添加方法要用到prototype属性,还没有学
读大佬文章有感