繁体   English   中英

为什么我不能`.call`在字符串上的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM