为什么你不能 Array.prototype.pop.call() 一个字符串?

Why are you unable to Array.prototype.pop.call() a string?

据我了解,一些 Array 方法可以通过使用 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这样的方法是行不通的。