美文网首页
Function扩展

Function扩展

作者: 向上而活 | 来源:发表于2020-06-16 17:21 被阅读0次
    1. Function.prototype.bind(obj) :
    • 作用: 将函数内的this绑定为obj, 并将函数返回
    1. 面试题: 区别bind()与call()和apply()?
    • 都能指定函数中的this
    • call()/apply()是立即调用函数
    • bind()是将函数返回
    • 传入参数的形式:
      call直接从第二个参数开始,依次传入
      apply第二个参数必须是数组,传参放在数组里
      bind的特点:绑定完this不会立即调用当前的函数,而是将函数返回,bind传参的方式同call一样
    <script>
            var obj={username:'kobe'}
            function foo(data){
                console.log(this,data);
            }
            
            // foo('测试');//window 测试
            // foo.call(obj,'测试')//{username:'kobe'} 测试
            // foo.call(obj,['测试'])//{username:'kobe'} ['测试']
            // foo.apply(obj,'测试')//报错
            //foo.apply(obj,['测试'])//{username:'kobe'} 测试
            
            //var fun=foo.bind(obj,33);//不会立即调用当前的函数
            //console.log(fun);//foo(data){console.log(this,data);}  
            
            //foo.bind(obj,33)();//{username:'kobe'} 33
            
            setTimeout(function(){
                console.log(this);//{username:'kobe'}
            }.bind(obj),1000)
            
        </script>
    

    相关文章

      网友评论

          本文标题:Function扩展

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