var hello = 'hello';
Array.prototype.unshift.call(hello, '11') // gives error
Array.prototype.join.call(hello, ', ') // works, why??
有人可以向我解释为什么吗.join有效以及为什么.unshift doesn't
因为字符串是不可变的,并且unshift
尝试分配给字符串的索引(属性),如
"hello"[4] = '1'
参考:http://www.ecma-international.org/ecma-262/6.0/#sec-string-exotic-objects http://www.ecma-international.org/ecma-262/6.0/#sec-string-exotic-objects:
String 对象是一种奇特对象,它封装 String 值并公开与 String 值的各个代码单元元素相对应的虚拟整数索引数据属性。外来字符串对象总是有一个名为“length”的数据属性,其值是封装字符串值中代码单元元素的数量。代码单元数据属性和“长度”属性都是不可写和不可配置的。
join
不分配任何内容,只读取属性,因此它适用于任何具有.length
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)