为什么javascript文字与非文字对应物的作用不同

Why do javascript literals act differently as their non-literal counterparts?

本文关键字:文字 作用 javascript 为什么 对应物      更新时间:2023-09-26

这是我一直认为理所当然的事情,但我想知道它的原因。

例如,我为什么可以这样做:

var a = new Number(1);
a.test = 'string';
console.log(a.test);
>>> 'string'

但当我做时

var a = 1;
a.test = 'string';
console.log(a.test)
>>> undefined

为什么他们的行为如此不同?

编辑:Andrea比我在这个线程中更好地表达了这个问题:Javascript基元类型和相应的对象

如果JavaScript检测到有人试图将属性分配给基元,它确实会将基元强制分配给对象。

https://javascriptweblog.wordpress.com/2010/09/27/the-secret-life-of-javascript-primitives/