博观而约取,厚积而薄发。这篇文章主要讲述call和applay的使用相关的知识,希望能为你提供帮助。
- call方法
- 调用一个对象的一个方法,以另一个对象替代当前的对象。说明白一点,其实就是更改对象的内部指针,即改变对象this的指向内容;参考代码如下:
function Obj(){
this.value="https://www.songbingjia.com/android/obj的变量";
} var value="https://www.songbingjia.com/android/the window"; function fn(){
alert(this.value);
}window.fn(); //the window fn.call(window); //the window fn.call(new Obj()); //obj的变量
var fun = new function(){ this.a="fun"; } varmyfun =function(x){ var a ="myfun"; alert(this.a); alert(x) } myfun.call(fun,‘var ‘)//funvar
最后,分析结果
1、全局对象window调用函数fn,this指向window对象,因此this.value为the window
2、函数fn调用call方法,this默认指向第一个参数window对象,因此this.value也为the window
3、函数fn调用call方法,this默认指向第一个参数new Obj(),即Obj的对象,因此this.value为Obj的成员变量obj的变量
5、函数myfun调用call方法,this默认指向第一个参数fun函数对象,因此this.value为this.a,即fun
6、函数myfun调用call方法,第二个参数属于函数对象myfun的参数,因此alert(x)为第二个参数var
对于call和apply两者在作用上是相同的。但两者在参数上是不同的。对于第一个参数都一样,但对于第二个参数,apply传入的是一个参数数组,也就是将多个参数组成一个数组传入,而call则作为call的参数传入:
fun.call(fun1,var1,var2,var3)
【call和applay的使用】fun.apply(fun1,[var1,var2,var3])
推荐阅读
- create react app遇到的问题
- Android TextView加上阴影效果
- JSP Scriptlet标记(脚本元素)
- 如何在Windows 10中启用或禁用Windows Ink(分步指南)
- Esrv.exe程序错误0xc0000142(修复方法详细指南)
- 什么是gcapi.dll、用途以及如何删除它()
- LogTransport2.exe提示和指南(它是什么以及如何修复错误())
- 如何修复Windows 10中的更新错误0x800f0805(解决办法)
- 安装系统 系统之家迅速重装系统大师运用图文详细教程