美文网首页js高级
函数上下文调用之bind方法

函数上下文调用之bind方法

作者: 椋椋夜色 | 来源:发表于2019-05-27 21:51 被阅读0次

    <!DOCTYPE html>
    <html lang="zh-CN">

    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title> 函数上下文调用之bind方法 </title>

        <script>
            // bind用法跟call是一毛一样的, 只是效果不一样;
            // 用法:函数.bind(要修改的this指向,参数1,参数2,...参数n);
    
            //效果不一样:
            //用call的时候会立刻调用函数
            //用bind的时候不会调用, 而是返回一个修改了this指向的新函数
    
            function f1 (a,b) {
                console.log(a,b);
                console.log(this);
            };
            var obj = {name:"jack"};
            f1.call(obj,10,20); // call 会立即调用;
            // bind相当于会把函数里的this和参数绑死在函数里返回这个新函数
            var res = f1.bind(obj,100,200);
            res();
             // 只改掉this,不绑死参数
             var res1 = f1.bind(obj);
             // 调用的时候传多少就是多少
             res1(101,202);
    
             var obj1 = {name:"jack"};
             obj1.sayHi = function () {
                 console.log(this); 
             };
             var obj2 = {name:"rose"};
            // 这里产生一个新的函数,新的函数里的this绑死了obj1
             obj2.sayHi = obj1.sayHi.bind(obj1);
             obj2.sayHi() // jack的obj了
    
        </script>
    

    </head>

    <body>
    </body>

    </html>

    相关文章

      网友评论

        本文标题:函数上下文调用之bind方法

        本文链接:https://www.haomeiwen.com/subject/rkaktctx.html