问答详情
源自:6-4 [JavaScript]函数属性arguments

bind方法不是弃用了吗?

bind方法不是弃用了吗?

提问者:慕丝0963956 2017-08-28 15:33

个回答

  • beblueblue
    2018-08-09 09:32:52

    jquery的事件绑定方法.bind(),和视频所讲的js原生修改函数this指向的.bind(),是两个东西啊。大兄弟,你会不会把这两者混淆了~

  • qq_oo_58
    2017-08-29 15:20:48

    bind 函数在 ECMA-262 第五版才被加入;它可能无法在所有浏览器上运行。你可以部份地在脚本开头加入以下代码,就能使它运作,让不支持的浏览器也能使用 bind() 功能。

    if (!Function.prototype.bind) {
     Function.prototype.bind = function (oThis) {
       if (typeof this !== "function") {
         // closest thing possible to the ECMAScript 5
         // internal IsCallable function
         throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable")
       }

       var aArgs = Array.prototype.slice.call(arguments, 1),
         fToBind = this,
         fNOP = function () {},
         fBound = function () {
           fBound.prototype = this instanceof fNOP ? new fNOP() : fBound.prototype        return fToBind.apply(this instanceof fNOP
                                    ? this
                                    : oThis || this,
                                    aArgs.concat(Array.prototype.slice.call(arguments)))
           }
       if( this.prototype ) {
         // Function.prototype doesn't have a prototype property
         fNOP.prototype = this.prototype    }

       return fBound  }}