JS中,简单类型为何能使用复杂类型的方法(创建临时对象)
2020-07-22 本文已影响0人
凉城十月
在JS中,简单类型存储在stack中,而复杂类型(对象)存储在Heap中。
var n1 = 1 ; //存储在stack中
var n2 = new Number('1'); //作为一个对象1,存储在Heap中
下图是简单类型和对象的区别:
内存图
缺点:如图所示,简单类型并没有在Heap中存在内存,不能引用valueof和toString等方法,但是在日常中,我们都可以使用n1.toString(),这又是如何实现的呢?
妙计,悄悄地创建一个临时对象,进行一个临时转换,然后完成赋值后被垃圾回收:
temp = new Number(n1)
temp.toString()
所以在JS中,用不同方法创建的n1和n2,都可以使用自带的方法。
重要!!!面试题:
var n = 1
n.xxx = 2
n.xxx //undefined,临时对象,取完值后会被马上抹杀。