关于Array的栈操作方法pop\push,饶有兴趣的找到了MDN的pop指南。 pop是如何执行的?,弹出数组最后一个元素,且返回最后一个元素。ECMA262用伪代码写出了pop执行过程
注意以下几点: 1.空数组返回undefined
2、通过设置数组长度(而不是删除某一个元素)弹出最后一个元素
3、pop改变了元数组
关于pop,类数组是不能使用该方法的,会报如下错误:
这是因为Array.prototype.pop,类数组是不能使用的,只有转换成数组才能用, 如何把类数组转换数组呢?
Array.prototype.slice
该方法可以转换成类数组为数组。 所以以下这种方式就不会报错了:
那么slice如何实现的呢?看MDN给出了答案
其实就是通过数组截取,用一个数组存储截取的元素,返回就可以了。这段代码是polyfill浏览器兼容脚本的实现方式,应该最能让人理解了。