每个函数都包含两个非继承而来的方法:call和apply
相同点:这两个方法的作用是一样的:都是在特定的作用域中调用函数,设置好方法中this对象的值,用来扩充函数赖以运行的作用域
apply
语法:function.apply(thisArg,[argsArray]),例如:
图片截取自:https://blog.csdn.net/ganyingxie123456/article/details/70855586
上图中Dog对象可以调用pet对象中的方法。
call就不写了,类似的。
不同点:
它们接收的参数不同,第一个都是this,但apply第二个是对象,call第二个必须列举出来(是一个参数列表)。apply和call如果第一个参数没有那么默认为global
(说白了,二者的区别就是第二个参数的表现形式不一样罢了)
最后弄个自己写的上去
一个面试题:写一个log代理console.log的功能