美文网首页JavaScript
没图说个锤子之js bind方法

没图说个锤子之js bind方法

作者: 该昵称已存在 | 来源:发表于2015-06-28 21:07 被阅读75次

    首发于搞起博客,示例代码见原文中

    bind方法,写javascript的肯定都见过,我也是,但是,不是经常用的话,基本上过一段时间就会模糊了,所以,决定把它转化成图像,估计比较容易记忆。

    概念

    我们来看看MSDN上关于javascript bind函数的解释:

    对于给定函数,创建具有与原始函数相同的主体的绑定函数。 在绑定函数中,this 对象将解析为传入的对象。 绑定函数具有指定的初始参数。

    哈哈哈哈,是不是懵逼了?

    莫慌,我们慢慢来看,看看用法先:

    用法

    function.bind(thisArg[,arg1[,arg2[,argN]]])

    参数

    function 必选。 一个函数对象。

    thisArg 必选。 this 关键字可在新函数中引用的对象。

    arg1[,arg2[,argN]]] 可选。 要传递到新函数的参数的列表。

    返回值

    与 function 函数相同的新函数(注意是新函数!),thisArg 对象和初始参数除外。

    异常

    如果指定的 function 不是函数,则将引发TypeError异常。

    看到这里我们基本对bind方法的使用有个初步认识了,那先来看看具体示例再分析分析。

    示例

    this绑定

    好了,这个简单的示例看完了,我们知道了,使用bind将一个对象绑定到某个函数中,这个函数中所使用的this就会指向绑上去的函数了,不罗嗦了,画个图理解。

    参数绑定

    在参数中还可以有几个参数带进来arg1[,arg2[,argN]]]

    // 又是定义一个函数,这次是4个参数

    vardisplayArgs=function(val1,val2,val3,val4){

        document.write(val1+" "+val2+" "+val3+" "+val4);

    }

    varemptyObject={};

    // 使用bind,产生一个新函数

    // 这个新函数的第一第二个参数已经定死了为这两个,再有参数往后排vardisplayArgs2=displayArgs.bind(emptyObject,12,"a");

    // 这里就是两个排队的参数了displayArgs2("b","c");

    // 输出: 12 a b c

    恩,知道,上图再说对吧

    上图可以看出bind时传入的参数,在新函数中作为最先使用的参数,但是它并没有改变原函数参数的个数。

    不知道看了两幅图,记住了bind方法没?

    相关文章

      网友评论

        本文标题:没图说个锤子之js bind方法

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