作为一名前端小白,就要开始了自己的第一篇文章了,心里也是小小的激动,同时也是为自己以后前端路上的成长铺好基石。好了,废话不多说,在之前的面试中,时常会被问到关于call与apply的区别,尽管面试前做足了准备,可是被问到了还是一脸懵逼,所以今天特地网上看了一些文章来做个总结。
call与apply的区别:
obj.call(thisobj,...num1,num2);
obj.apply(thisobj,[num1,num2,...]);
以上两行代码作用实际上都是一样的,都是让thisobj具有obj的属性和方法,唯一的不同点就是call后面所跟的参数主要是连续参数,而apply后面所跟的参数主要是以数组形式来进行呈现的;
实际上说了那么多,相信大家应该也明白了,实际上就是关于继承的问题了;
举个例子详细说明:
var obj={0:1,1:'hy',2:25};
obj.slice(); //显然这里是会报错的,因为slice的方法是数组所拥有的
那么我们就考虑通过使obj来具有数组的属性和方法
Array.prototype.slice.call(obj);
console.log(obj);
以上自然也就可以打印出结果了
最后说一点关于bind的方法使用
bind同样也是可以实现继承的,具体代码如下
obj.bind(thisobj,...num1,num2)();
记住后面一定要添加括号,否则一定会报错;
面试过程中延伸提问,您还了解其他的继承方式吗?关于闭包,原型,原型链您了解吗?
以上所说不做详细阐述,自己上网看文档,我也要看文档,哈哈
推荐https://www.cnblogs.com/chenweizhen/p/6421564.html转载自臻爷爷
网友评论