call,apply,bind三个方法

90 阅读1分钟

call方法

1.可以调用函数
2.可以改变this指向

  <script>
        function fn() {
            console.log(this);//这个时候this指向window
        }
        fn()
    </script>

用到call

 <script>
        function fn() {
            console.log(this);//这个时候this指向window
        }
        // fn()
        var o = {}
        fn.call(o)//不仅调用了fn这个函数而且这时函数里的this指向对象o
    </script>

第一个参数是改变this指向,后面的参数是传递的实参

apply方法

1.可以调用函数
2.可以改变this指向 第一个参数是改变this指向,第二个要求是一个数组

 <script>
         function fn(arr) {
            console.log(this);
            console.log(arr);
        }
        // fn()
        var o = {
            uname:"andy"
        }

        fn.apply(o,["pink"])//后面的参数要求是伪数组
    </script>

bind方法

1.不能调用函数
2.可以改变this指向 3.返回的是原函数改变this之后产生的新函数