课程
/前端开发
/JavaScript
/JavaScript深入浅出
arr.join("_")与Array.prototype.join.call(arr,"_")有区别吗
2017-10-04
源自:JavaScript深入浅出 5-5
正在回答
由图可以看出,两个方法是相等的,注意我用的是严格相等,但是当我用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以后,进行调用。所以我觉得应该是一样的。
举报
由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握
3 回答get与set的区别
1 回答bind,call,apply,的作用有区别吗?
2 回答对象的class属性如何理解,与typeof有何区别?
4 回答老师,这里的Object.creat和new有什么区别吗
5 回答typeof和toString有什么区别