js_call,apply,bind修改this值

        function foo(arg1, arg2, arg3) {
            console.log(arg1);
            console.log(arg2);
            console.log(arg3);
            console.log(this.a);
        }
        var obj1 = {
            a: 77
        }
        foo.call(obj1, 1, 2, 3); //1,2,3,77
        foo.apply(obj1, [11, 22, 33]); //11,22,33
        var e = foo.bind({
            a: 44
        });
        obj1.ne = e;

        function fo() {
            e(10, 20, 30);
        }
        fo(); //10,20,30,44
        obj1.ne(10,20,30);//10,20,30,44

call和apply是同样的用法。bind返回一个函数,这个函数强行绑定this到指定对象上,不管在哪一个context上调用,都不会再修改this的值。

posted @ 2020-07-12 20:19  Syinho  阅读(145)  评论(0编辑  收藏  举报