美文网首页
js中bind方法的灵活性

js中bind方法的灵活性

作者: 周紫一 | 来源:发表于2018-04-23 15:01 被阅读9次
    var x = 100;
    
    var module = {
        x:42,
        getX: function(){
            return this.x;
        }
    }
    
    var retrieveX = module.getX
    console.log(module.getX)                //ƒ (){return this.x;}      
    console.log(retrieveX)                  //ƒ (){return this.x;}      
    console.log(retrieveX())                //100,因为此时retrieveX中的this指向的全局,所以打印出全局变量中的x
    var boundGetX = retrieveX.bind(module)  //将函数retrieveX绑到对象module上,此时retrieveX中的this指的是module
    console.log(boundGetX())                //42,原因上一句解释了哦
    
    ////////////再理解/////////////
    var printX = function(){
        return this.x;
    }
    var printXObj = printX.bind(module);
    console.log(printXObj());
    
    

    Function.prototype.bind,
    Function.prototype.call,
    Function.prototype.apply,
    此三者只有一个作用,改变函数中的this指向,

    区别:

    call,apply基本没什么区别只是传参方式略有不同,call以多个参数的形式,apply以一个数组的形式

    1、bind方法将指定Function绑到指定对象后生成一个新的Function,并且新生成的这个Function不会立即执行,只有在调用的时候执行。
    2、call,apply绑定和执行是同时进行的
    总:bind更加灵活,

    相关文章

      网友评论

          本文标题:js中bind方法的灵活性

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