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,临时对象,取完值后会被马上抹杀。
上一篇 下一篇

猜你喜欢

热点阅读