阵列不印字在JavaScript字符串

问题描述:

var hello = 'hello'; 
Array.prototype.unshift.call(hello, '11') // gives error 
Array.prototype.join.call(hello, ', ') // works, why?? 

可有人向我解释为什么。加入作品,为什么.unshift阵列不印字在JavaScript字符串

+0

你到底想干什么? – 2016-04-03 11:50:21

因为字符串是不可改变的,并且unshift尝试分配给指数(字符串的属性),如在

"hello"[4] = '1' 

参考:http://www.ecma-international.org/ecma-262/6.0/#sec-string-exotic-objects

String对象是封装String值并显示对应于String值的各个代码单元元素的虚拟整数索引数据属性的外来对象。外来字符串对象总是有一个名为“length”的数据属性,其值是封装字符串值中的代码单元元素的数量。 代码单元数据属性和“length”属性都是不可写和不可配置的。

join不分配任何东西,只读取性能,因此使用具有.length任何对象的工作。