javascript - 为什么无法 Array.prototype.pop.call() 字符串?

标签 javascript arrays string prototype

据我了解,一些数组方法可以通过使用 call方法。在回答这个问题时:

Remove last forward slash from href anchor

我遇到了一个意想不到的问题。我无法在字符串上使用 pop.apply() 而不会收到此错误;

"message": "Uncaught TypeError: Cannot delete property '39' of [object String]"

为什么会失败以及为什么只有某些数组方法有效?

let href = $('.anchor').prop('href');
Array.prototype.pop.call(href);

console.log(href);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://example.com/my-account/#example/" class="anchor">...</a>

最佳答案

并非所有数组方法都可以在数组上使用。那些尝试改变字符串的方法将不起作用。在 Javascript 中,字符串是不可变的。因此,pushpopshiftsplice 等方法不起作用。

关于javascript - 为什么无法 Array.prototype.pop.call() 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55937040/

相关文章:

javascript - 将多个项目添加到上下文菜单

php - 什么是完成 : explode -> apply some_func -> implode without a foreach? 的优雅方法

c++ - 除了使用 vector 或 new 之外,还有其他方法可以创建动态大小的数组吗?

java - Java中如何按多个字段对对象进行排序?

java - 从文件中读取数组。 (java)

javascript - 休息参数是否允许优化?

javascript - 检测数组项中的 Mailto 与 Http/Https 并在新选项卡中打开 Http url

javascript - 如何替换常量中的 es6 模板字符串

excel - 在 Excel/Calc 中将文本反转为列

python - 如何比较两个列表?