包装对象与类型装换
作者:互联网
包装对象
-
包装对象:
- Number()
- String()
- Boolean()
-
原始类型可以使用方法与属性:
let num = 55; console.log(typeof num.toString())//string let str = 'hello'; console.log(str.split(''));//[ 'h', 'e', 'l', 'l', 'o' ] console.log(str.length)//5
如上,以str来说,直观上看是一个原始类型调用了一个方法,但其实还是js帮由对象new String(str)帮我们调用了属性或方法。
又例如:
let str = 'hello';//定义原始类型 str.name = 'xiaohu';//定义属性name,执行后帮我们调用new String(str)这个包装对象 且等于'xiaohu',但是在执行之后就销毁了str.name console.log(str.name);//这里又帮我们调用new String(str)这个包装对象,但这次没有'xiaohu',这个值,所以会输出undefined
我们自己创建一个包装对象:
let num1 = new Number(123); let num2 = new Number(123); console.log(num1 === num2)//false //创建一个原始类型num3 let num3 = 123; console.log(num1 === num3)//false
所以说,包装对象与包装对象比较的不是值,所以我们尽量不要主动创建包装对象,包装对象的创建会在后台自己解析且创建的。
-
包装对象的作用:
-
包装对象:
- String()
- Number()
- Boolean()
-
包装对象的作用:创建包装对象的构造函数可以用来做类型转换,例如:
let num = 123; console.log(typeof num);//number console.log(typeof num.toString())//string console.log(typeof toString(num));//string
-
类型转换
-
类型装换可以分为:
-
显示装换(强制转换)
let i = 10; let j = 20; console.log(Number(i)+Number(j));//30
- 显示转换包括:
- Number()
- String()
- Boolean()
- toString()
- parseInt()
- paesrFloat()
- 显示转换包括:
-
隐式转换(自动转换)
- 包括:
- if语句
- while语句
- 逻辑与
- 逻辑或
- 逻辑非
- :使用=可代替==,既可以避免歧义,也可以提升性能。
- 包括:
-
-
关于null与undefined是否可以调用toString()
let i = null; console.log(i.toString());//Cannot read property 'toString' of null
可以看到,浏览器抛出了错误,在上一模块中,我们谈到,原始类型在调用方法或属性的时候会由后台帮我们调用相应的对象。例如使用Number() 会调用new Number(xx)的包装对象。
而在上例子中的null(同undefined)是没有相应的包装对象的。
-
各种数据类型实现类型转换:(if条件)
- 数值类型只有0和NaN会转换成false
- null和undefined都会转换成false
- 空字符串会转换成false,其他的为true
- 所有对象都会转换成true
-
关于逻辑与
console.log(10 && 20)//20 console.log(0 && 20)//0
- 逻辑与左侧的值转换成布尔值,如果为true,那么逻辑与表达式的返回值就是第二个值。如果左侧为false,那么返回值就是第一个值。
标签:console,log,包装,装换,对象,let,str 来源: https://www.cnblogs.com/warm-px/p/16031357.html