apianmuse
2017-10-04 16:00
arr.join("_")与Array.prototype.join.call(arr,"_")有区别吗
由图可以看出,两个方法是相等的,注意我用的是严格相等,但是当我用time去检查时发现,在原型上调用的的方法效率大大提高。所以就性能而言,一般使用原型调用。
第一个是把数组转化为字符串的方法,第二个是把字符串转化为数组吧。。。。。。我是这样区分滴,不知准确不
后者是指定的对象上没有join()方法,所以指定到Array.prototype 原型 ,使用call为其添加join方法,
通俗的讲 就是你没有这个技能,但是我(call)教授这个技能,你就有了。 小白理解,如有错误,请谅解指点
arr.join这调用是错误的吧,-_-||,我测试了一下,是不行的。
Array.prototype.join.call(arr,"_")调用的是数组对象上的方法。
你可以试一下:
<script type="text/javascript">
var i='afhf';
console.log(i.join('-'));//显示i.join不是一个方法
var p='join' in String.prototype;//在字符串对象上也没找到join方法
console.log(p);
</script>
结果是一样的。我觉得应该是一样的,arr.join调用的时候,其实在查找join方法的时候,也是在原型链上进行查找,在Array.prototype上找到join以后,进行调用。所以我觉得应该是一样的。
JavaScript深入浅出
281112 学习 · 1020 问题
相似问题
回答 3
回答 5