美文网首页
JS中,简单类型为何能使用复杂类型的方法(创建临时对象)

JS中,简单类型为何能使用复杂类型的方法(创建临时对象)

作者: 凉城十月 | 来源:发表于2020-07-22 23:30 被阅读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,临时对象,取完值后会被马上抹杀。

相关文章

网友评论

      本文标题:JS中,简单类型为何能使用复杂类型的方法(创建临时对象)

      本文链接:https://www.haomeiwen.com/subject/vxggkktx.html