Js中的上下文调用,apply与call

认识上下文调用模式

上下文调用模式就是改变context的执行方式,也就是修改函数的调用方式,也就是修改this的值

来看个具体的例子


        var name = "里奥梅西";
        function sayHello(a, b) {
            console.log(this.name + "进了"+ (a * b) + "个球");
        }
           var obj = {
            name:"C罗"
        }
        sayHello();
        //如果此时直接调用sayhello方法,它会去全局中找name,打印的是里奥梅西进了多少球,那如果想打印梅西呢,就需要改变函数的调用模式,不再是全局调用模式,改变它的this指向的对象为obj。
        //这时就用到了上下文模式
        //apply和call方法。
        var arr = [100,3]
       sayHello(obj,arr);
       console.log( sayHello(obj,arr);) //此时打印的便为C罗进了300个球。
如上述代码所示 apply和call可以修改this的值,也就是修改函数调用的上下文

下面来具体看一看两者的参数与区别:

函数.apply(对象,函数需要的参数列表(是一个数组));
函数.call(对象,函数需要的参数列表)

区别:

1.第一参数均为要把this改变为的那个对象
2.第二个参数是指函数需要参数,其中apply是用数组传递的,而call是用单个参数传递的
3.call用于确定了函数的形参有多少个的时候使用
apply用于函数的形参个数不确定的情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值