阵列不印字在JavaScript字符串
问题描述:
var hello = 'hello';
Array.prototype.unshift.call(hello, '11') // gives error
Array.prototype.join.call(hello, ', ') // works, why??
可有人向我解释为什么。加入作品,为什么.unshift不阵列不印字在JavaScript字符串
答
因为字符串是不可改变的,并且unshift
尝试分配给指数(字符串的属性),如在
"hello"[4] = '1'
参考:http://www.ecma-international.org/ecma-262/6.0/#sec-string-exotic-objects:
String对象是封装String值并显示对应于String值的各个代码单元元素的虚拟整数索引数据属性的外来对象。外来字符串对象总是有一个名为“length”的数据属性,其值是封装字符串值中的代码单元元素的数量。 代码单元数据属性和“length”属性都是不可写和不可配置的。
join
不分配任何东西,只读取性能,因此使用具有.length
任何对象的工作。
你到底想干什么? – 2016-04-03 11:50:21