1,Boolean,String,Number
在创建字符串 布尔值 数字类型的变量的时候 引擎会创建一个对应的基本包装类型
通过基本包装类型来提供本类型的 属性和 方法
基本包装类型是一个引用类型
基本包装类型的生命周期只有一行代码
在创建变量时 给包装类型添加的属性和方法都是无效的
在上一行添加的属性和方法 在下一行已经不存在了
在实际工作中一半不要创建基本包装类型
2,所有的包装类型都是引用类型
基本类型 和基本类型的包装类型 是两个不一样的值
3,Boolean 包装类型
初始化
var obj=new Boolean(false)
也可以用下面这种
var obj=new Object(false)
new Object() 传入的是数字的话 就是一个数字类型的包装类型
传入字符串的话 就是字符串的包装类型
传入布尔值的话 就是布尔值类型的包装类型
var boo=false;
undefined
var boobj=new Boolean(false);
undefined
var obj=new Object(false);
undefined
typeof boo;
"boolean"
typeof boobj;
"object"
typeof obj;
"object"
boobj instanceof Boolean;
true
boobj instanceof Object;
true
obj instanceof Boolean;
true
使用 typeof 可以查看 基本类型和基本类型的包装类型不是同一种类型
使用 instanceof 可以判断 包装类型是那一种基本类型的 包装类型
可以发现 使用 Boolean 和 Object(false) 创建出来的包装类型都是 Boolean 包装类型
基本boolean 类型 和 Boolean 的包装类型进行布尔操作的时候 结果不一致
Boolean 包装类型的 ! 运算 总是返回 false
!(new Boolean());
false
4,Number 包装类型
几个方法:
toFixed() 保留小数点后面的有效数字 一个参数 表示要保留的小数点后面的数字的位数 按照四舍五入保留
0.666666666.toFixed(5);
"0.66667"
toExponential() 将数字按照科学计数法表示
0.00000000001.toExponential()
"1e-11"
100000000000.toExponential()
VM822:1 Uncaught SyntaxError: Invalid or unexpected token
var a=100000000000;
undefined
a.toExponential()
"1e+11"
直接点的话就报错了 不知道为什么
toPrecision() 根据数字 在toFixed() 和 toExponential() 选择一种合理的表示方法 传入一个参数表示 从第一个非0 的数字开始的有效数字的位数
var a=0.000000000000000001;
undefined
var b=0.111111111111111;
undefined
a.toPrecision()
"1e-18"
b.toPrecision(5)
"0.11111"
5,String 包装类型
几种方法:
slice() 可以从字符串中取出一部分 传入两个参数 [开始下标,结束下标) 含头不含尾 不会影响原字符串
var str="suklasukla";
undefined
str.slice(1,3);
"uk"
str
"suklasukla"
传入正数的话 就从左往右数 从0开始数
传入负数的话 就从右往左数 从-1开始数
都是从左往右取出字符串
如果第一个参数 不比 第二个参数大 那么就返回一个长度为0的字符串
var str="SuklaSukla";
undefined
str.slice(-2,-1);
"l"
str.slice(2,1);
""
substr() 取字符串 第一个参数表示开始取的下标 第二个参数表示要取出的 字符 的个数
substring() 和substr() 的参数的意义一样
var str="SuklaSukla";
undefined
str.substr(0,5)
"Sukla"
str.substring(0,5)
"Sukla"
indexOf() 从左往右 查找字符
lastIndexOf() 从右往左查找字符
var str="SuklaSukla";
undefined
str.indexOf("S")
0
str.lastIndexOf("S")
5
trim() 去掉字符串开头和结尾的空字符 并不会修改字符串本身
var str=" SuklaSukla ";
undefined
str.trim()
"SuklaSukla"
str
" SuklaSukla "
toLowerCase() 转为小写字母
toUpperCase() 转为大写字母
var str="SuklaSukla"; undefined str.toLowerCase() "suklasukla" str.toUpperCase() "SUKLASUKLA" str "SuklaSukla"
不会改变原字符串
replace() 替换匹配的字符第一个参数表示要匹配的字符 可以直接传字符串 也可以传入一个正则表达式 默认匹配第一个 /g 表示匹配全部 /i 表示忽略大小写
第二个参数表示要用来替换匹配到的字符的字符 可以是一个函数 用来处理匹配到的字符
var str="SuklaSukla"; undefined str.replace("S","123") "123uklaSukla" str.replace(/S/g,"123") "123ukla123ukla" str.replace(/S/i,"123") "123uklaSukla" str.replace(/S/ig,"123") "123ukla123ukla" str.replace(/S/ig,function(val){return 123;}) "123ukla123ukla" str "SuklaSukla"
String.fromCharCode() 传入一个正整数 转化为对应的字符 是String 包装类型的静态方法charCodeAt() 将字符串的首个字符的ASC 码返回
var str="Sukla"; undefined str.charCodeAt(); 83 String.fromCharCode(83) "S"