JavaScript 上下文调用模式(call(),apply())

本文详细介绍了JavaScript中this的含义及应用,并通过实例解释了如何使用apply和call方法来改变函数调用的上下文环境,即this的指向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


demo.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>

        //JS中的上下文
        //context 执行环境的意思
        //this

        // this是右值(等号右边),不能在左边被赋值更改。要改变this的值要使用上下文调用模式(apply、call)
//        function test(){
//            this = 1;  //this不能放在左边。
//        }
        
        //在上下文调用模式中,可以修改this的值,也就是可以修改函数的调用方式

        //使用如下两个方法,可以修改函数调用上下文,也就是this的值。(修改函数的调用者)
        //apply
        //函数.apply(对象, 数组类型的参数列表)   //后面的参数可省略,对象不能省
        //call
        //函数.call(对象,arg1,arg2,arg3...argn)   //后面的参数可省略,对象不能省

        var name = "张三";
        function sayHello(a, b) {
            console.log(this.name + "吃了"+ (a * b) + "个馒头");
        }

        var obj = {
            name:"李四"
        }

        sayHello.apply(obj,[3,3]);  //李四 第一个参数表示this的指向(函数调用者),第二个参数表示传给函数的参数数组(必须是数组类型)(可省略)

        sayHello.call(obj, 2, 2);  //李四 第一个参数表示this的指向(函数调用者),后面的参数表示传给函数的参数(可省略)
//        sayHello.call(obj);   


        //call和apply的区别
        //1.第一个参数都是要把this修改成的对象(函数的调用者)
        //2.当函数需要参数的时候,那么apply是用数组进行参数的传递
        //3.而call是使用单个的参数进行传递

        //call用于确定了函数的形参有多少个的时候使用
        //apply用于函数的形参个数不确定的情况
    </script>
</head>
<body>

</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值