js中改变this指向的三种方法

call()方法 (会自调用一次)

fn.call(目标对象) 将函数的this指向某个特定的对象,并且调用一次这个函数;call方法从第二个参数开始就是给函数的实参

// call()方法    
        function f1(a,b,c) {
            console.log(this)  //window ==> obj
            console.log(a+b+c)
        }

        var obj={
            uname:'张三'
        }
        // fn.call(目标对象)  将函数的this指向某个特定的对象,并且调用一次这个函数;call方法从第二个参数开始就是给函数的实参
        f1.call(obj,10,20,30)     //调用f1函数    打印60

apply()方法 (会自调用一次)

apply方法第一个参数与call方法一致,都是改变this指向的目标对象跟call方法的区别就是第二个参数是数组,数组里面就是函数本身需要的参数

        // apply()方法
        function f1(a,b,c) {
            console.log(this)  //window ==> obj
            console.log(a+b+c)
        }

        var obj={
            uname:'张三'
        }
        // apply方法第一个参数与call方法一致,都是改变this指向的目标对象
        // 跟call方法的区别就是第二个参数是数组,数组里面就是函数本身需要的参数
        f1.apply(obj,[10,20,30])  //====> 调用f1   打印60

bind()方法(不会自调用,需自己调用)

bind方法传参的值和call方法是一致的,区别在于call会直接调用,但是bind不会直接调用该方法,而是返回一个该方法的复制

        // bind()方法
        function f1(a,b,c) {
            console.log(this)  //window ==> obj
            console.log(a+b+c)
        }

        var obj={
            uname:'张三'
        }
        // bind方法传参的值和call方法是一致的,区别在于call会直接调用,但是bind不会直接调用该方法,而是返回一个该方法的复制
        var fn=f1.bind(obj,10,20,30)
        fn()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容