JS中函数的方法,call和apply,this小结

本文深入探讨了JavaScript中函数的call()和apply()方法,详细阐述它们如何调用函数并传递参数。同时,解释了this在不同调用场景下的指向,包括以函数形式、方法形式、构造函数形式以及使用call和apply时的情况。通过实例展示了这两个方法的使用,并指出了它们在传递参数上的区别。
摘要由CSDN通过智能技术生成

call()和apply(), 这两个方法是函数对象的方法,需要通过函数对象来调用,当函数用call()和apply()都会调用函数执行。

function fun(){
    alert("我是fun方法");
}

fun.call();
fun.apply();

var obj = {};

在调用call()和apply()时,可以将一个对象指定为第一个参数,这个对象将会成为函数执行时的this。

function fun(){
    alert(this);
}

//声明一个对象
var obj = {};

fun.call(obj);	//这样调用函数时,上面函数中的this就是对象obj,apply()和call()的用法一样
fun.call(obj2);	//此时上面函数中的this就是obj2

call()方法可以将实参在对象之后依次传递,apply()方法中需要将实参封装到一个数组中统一传递

function fun(a,b){
    console.log("a = "+ a);
    console.log("b = "+ b);
    alert(this);
}

//声明一个对象
var obj = {};

fun.call(obj,1,2);	//在对象之后紧跟的就是实参1,2。

fun.apply(obj,[1,2]);//将实参封装到一个数组中传递
  • this的情况。
    1.以函数形式调用时,this永远都是window

    2.以方法的形式调用时.this是调用方法的对象,谁调用方法,this就是谁
    3.以构造函数的形式调用时,this是新创建的那个对象

    4.使用call和apply调用时,this是指定的那个对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值