javascript - js中字符串不能借用数组splice方法
大家讲道理
大家讲道理 2017-04-11 12:01:51
[JavaScript讨论组]

运行如下代码报错:
var a = [];var b = 'str';a.prototype.splice.call(b,0,1,'aa')

报错部分:
VM1507:1 Uncaught TypeError: Cannot read property 'splice' of undefined(…)

求问为什么字符串不能借用数组中的splice方法

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(5)
怪我咯

简单来说,一个实例没有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?

迷茫

之前的回答解释了原因,我补充一个方法:

var b = 'string';
var result=b.split('').splice(0,4,'aa').join('')//返回删除的字符串

console.log(result)//stri
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号