运行如下代码报错:
var a = [];var b = 'str';a.prototype.splice.call(b,0,1,'aa')
报错部分:
VM1507:1 Uncaught TypeError: Cannot read property 'splice' of undefined(…)
求问为什么字符串不能借用数组中的splice方法
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
简单来说,一个实例没有prototype属性。

这里的[[prototype]]的调用要通过a.__proto__或者Obejct.getPrototypeOf(a)等方式调用。
所以这里的a.prototype是undefined的,自然也调用不了splice。
你可以这样用,Array.prototype.splice.call。
要这么调用你先看看splice的源代码吧,不然你也不会知道能不能这么调用啊。
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
以下是splice() 方法的三个参数:
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。
例子:
<html>
<body>
<script type="text/javascript">
var arr = new Array(6)
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"
arr[3] = "James"
arr[4] = "Adrew"
arr[5] = "Martin"
document.write(arr + "
")
arr.splice(2,3,"William")
document.write(arr)
</script>
</body>
</html>
结果:
George,John,Thomas,James,Adrew,Martin
George,John,William,Martin
你确定你想用的是splice而不是slice?
之前的回答解释了原因,我补充一个方法: