为什么javascript文字的行为与非文字对应物不同?

时间:2013-07-04 13:13:00

标签: javascript variables literals

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

例如,我为什么要这样做:

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 primitive types and corresponding objects

1 个答案:

答案 0 :(得分:0)

  

如果JavaScript检测到尝试将属性分配给基元,它确实会将基元强制转换为对象。

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