js bind call apply 对象冒充(替换this指向)

本文深入探讨了JavaScript中的bind、call和apply方法,阐述它们如何改变函数内部的this指向。bind创建新函数,确保this始终指向指定对象,而call和apply则在函数调用时动态设定this。示例展示了如何使用这些方法在不同对象上下文中调用方法和传递参数。
摘要由CSDN通过智能技术生成

bind call apply 对象冒充(替换this指向)

bind

  1. bind的作用: 生成新的函数和原函数一样,但是里面的this指向会替换成bind的参数
  2. bind会生成新的函数,新函数内的this指向被替换,生成的函数 this执向是固定的并不是调用的时候去找
var person = {
            name: 'wl',
            age: 18,
            say: function() {
                console.log(this.name);
            }
        }
        var person2 = {
            name: 'xy',
            age: 18,

        }
        var fun = person.say.bind(person2);
        fun();

call apply

  1. 这两个方法是 替函数调用 调用的时候替换this指向
  2. call和apply功能一样,语法不一样,当函数调用的时候需要传递参数时,两者写法不同。
  3. call 调用函数的时候,第一参数是要替换成的this指向,第二个及后面的参数都是给函数传递的参数 call(this指向,a,b,c) abc相当于给函数传参
 var person3 = {
           name: 'wl',
           age: 18,
           say: function(a) {
               console.log(a);
               console.log(this.name);
           }
       }
       var person4 = {
           name: 'xy',
           age: 18,

       }
       person3.say.call(person4, 'll');
  1. apply 调用函数的时候,第一个参数是要替换成this的指向,第二个是参数是 数组 里面放的是所有的参数 apply(this指向,[a,b,c])
  2. apply 有的时候并不希望改变this的指向只希望将数组中所有的内容传递给某个函数 this指向参数写成:nul ,0,’’,undefined
function sum() {
            var res = 0;
            for (var i = 0; i < arguments.length; i++) {
                res = res + arguments[i];
            }
            return res;
        }
        var arr = [1, 2, 3, 4, 5];
        console.log(sum.apply(null, arr));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值