目录
- 类型转换
- 内存图
- 深拷贝VS浅拷贝
类型转换
一、其他类型转字符串:
3种方式:
1.xxx.toString()
—— 常规方法
var n =1
n.toString()
"1"
var object ={name:'ajing'}
object.toString()
"[object Object]" //对象的toString方法,得不到我们想要的
null
不行,报错(Cannot read property 'toString' of null)
undefined
不行,报错(Cannot read property 'toString' of undefined)
2.xxx
+ ''
—— 老司机方法(推荐)
1 + ''
'1'
//
null + ''
"null"
//
true + ''
'true'
//
var obj = {}
obj + ''
"[object Object]"
1 + '1' //等同于(1).toString() + '1'
'11'
3.window.String(xxx)
var n=1
window.String(1)
"1"
window.String({})
"[object Object]"
window.String(null)
"null"
二、其他类型转boolean
1.Boolcan(xxx)
—— 常规方法
Boolean(1)
true
Boolean(0)
false
Boolean('')
false
Boolean(' ')
true
2.!!xxx
—— 老司机方法
!!{}
true
!!{name:'ajing'}
true
5个falsy值:number中(0 NaN)、string中('')、null、undefined
object全都为true
三、其他类型转number
内存图
浏览器中JS占的内存分两个区域——代码区和数据区,数据区又分两个区——Stack(栈内存)和Heap(堆内存)
数字64位 字符16位
用内存图分析解决问题
关于垃圾回收
如果一个对象没有被引用,它就是垃圾,将被回收。
深拷贝VS浅拷贝
深拷贝(a赋值给b,b变a不变),基本类型的赋值就是深拷贝
浅拷贝(a赋值给b,b变a也变)
end