[英]Why ArraySpeciesCreate is called in Array.prototype.splice?
[英]Why can't I `.call` Array.prototype.splice on a string?
我明白我可以并且可能应该使用substring
:)
出于教育原因,我想知道为什么我不能使用call
对字符串进行拼接操作,我理解这是一个类似数组的对象。 看起来这应该工作:
Array.prototype.splice.call('filename.jpg', -3, 3).join(''); // return the last three chars
引发错误TypeError: Object.isSealed called on non-object
在V8中的TypeError: Object.isSealed called on non-object
。
在Javascript中,字符串是不可变的; 它们在创建后无法更改。 所以没有“set char”或“splice”方法,因为无法更改字符串。 但是,您可以在它们上调用split('')
将它们转换为数组,因此您可以使用'filename.jpg'.split('').splice(-3, 3).join('')
同样的效果。
您需要先将其转换为数组对象
Array.prototype.splice.call('filename.jpg'.split(''), -3, 3).join('');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.