网站图片切换,找我家是做的视频网站好,教育网站平面设计,深圳网站设计建设之前做过这样的一道题就是问apply#xff08;#xff09;与call#xff08;#xff09;的区别。当时没能答出来#xff0c;现在整理一下#xff0c;希望以后有帮助。其实每个函数都包含两个非继承而来的方法#xff1a;apply#xff08;#xff09;和call#xff08;… 之前做过这样的一道题就是问apply与call的区别。当时没能答出来现在整理一下希望以后有帮助。 其实每个函数都包含两个非继承而来的方法apply和call。这两个方法用途都是在特定的作用域中调用函数实际上等于设置函数体内的this对象的值。 首先apply方法接收两个参数一个是在其中运行函数的作用域另一个是参数数组。其中第二个参数可以是array的实例也可以是arguments对象。 call方法与apply方法的作用相同他们的区别仅在于接受参数方式不同。对于call()第一个参数没用变化都是运行函数的作用域变化的都是其余参数都直接传递给函数。即传递给函数的参数必须逐个列出来。 事实上传递参数并非apply与call的真正用武之地他们的真正强大的地方是能够扩充函数赖以运行的作用域。看个例子window.colorred;var c{color:blue};function sayColor(){alert(this.color);}sayColor(); //redsayColor.call(this); //redsayColor.call(window); //redsayColor.call(c); //blue最后使用call()和apply来扩充作用域的好处就是对象不需要与方法有任何的耦合关系。 转载于:https://blog.51cto.com/eadonlearning/1334431