改变函数this的指向

<script>

        /*   

       常用的改变函数this指向的代码有:  call()  apply()  bind ()

        语法:

        call  (参数1, 参数2, 参数3……)   参数1 : 要替换this 的值 参数2,3,4…… 是添加的参数

        apply (参数1, [参数2, 参数3……]) 参数1 : 要替换this 的值 [参数2,3,4…… 是添加的参数]

        bind  (参数1, 参数2, 参数3……)() 参数1 : 要替换this 的值 参数2,3,4…… 是添加的参数 

        ()最后需要二次调用

        相同点 

        他们都可以改变this指向

        不同点 

        apply的第二个参数是数组  

        bind 需要二次调用

        */

        代码如下:

        var obj = {

            name: '李四',

            say: function (a, b) {

                console.log(this.name, a, b);

            }

        }

        obj.say.call({ name: '张三' }, 'hello', 'world')// obj.say 函数中的 this 变成了 {name:'张三'}

        obj.say.apply({ name: '张三' }, ['hello', 'world'])

        obj.say.bind({ name: '张三' }, 'hello', 'world')();

        var obj2 = {

            name: '李四',

            setname: function () {

                obj.say.call(this); // 这里 this 指的是 obj2

                // 继承了 obj 的属性 并调用了obj2 的name

            }

        }

        // obj2.setname(); // 谁调用 this就是谁 

    </script>

     改变this的指向最重要的是牢记他们的语法以及相同点和不同点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值