美文网首页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