zoukankan      html  css  js  c++  java
  • bind() 理解 【转】

    bind()可稍后执行  call()  apply()

    为了搞清这个陌生又熟悉的bind,google一下,发现javascript1.8.5版本中原生实现了此方法,目前IE9+,ff4+,chrome7+支持此方法,opera和safari不支持(MDN上的说明)。 
    bind的作用和apply,call类似都是改变函数的execute context,也就是 runtime 时 this 关键字的指向。但是使用方法略有不同。一个函数进行bind后可稍后执行。

     bind 方法实现:绑定this  和 “科里化”:

    function getConfig(colors,size,otherOptions){

      console.log(colors,size,otherOptions)

    }

    var defaultConfig = getConfig.bind(null,"#f00","1024*768");

    defaultConfig("123");  //#f00 1024*768 123

    defaultConfig("345");  //#f00 1024*768 345

    因为bind 方法是EMS5 以后提出的方法,对于老的浏览器,可以使用手写一个bind 方法

    if(!Function.prototype.bind){

      Function.prototype.bind = function(oThis){

        if(typeOf this !== 'function'){

          throw new TypeError('What is trying to be bound is not callable')

        }

        var aArgs = Array.prototype.slice.call(arguments,1),

          fToBind = this,

          fNOP = function(){};

          fBound = function(){

            return fToBind.apply(this instanceof fNOP?this:oThis,

               aArgs.concat(Array.prototype.slice.call(arguments)))

          }

        fNOP.prototype = this.prototype;

        fBound.prototype = new fNOP();

        return fBound;

      }

    }

  • 相关阅读:
    JSP中的必用的HTML元素_表单
    JSP规范_Tag Files(标签文件)
    JSP规范_Tag Library标签库
    JSP规范_JavaBean
    mysql 视图_触发器_函数_存储过程_事务_动态防SQL注入
    mysql 命令总结(持续补全)
    file 操作以及函数各种操作
    字符编码理解
    字符串操作学习
    kd的程序小设计
  • 原文地址:https://www.cnblogs.com/baota/p/6738562.html
Copyright © 2011-2022 走看看