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