为了账号安全,请及时绑定邮箱和手机立即绑定

以下重写bind的函数结果为何不同

以下重写bind的函数结果为何不同

萧十郎 2019-01-30 17:18:34
    1.第一种方式        Function.prototype.bind = function() {            var fn = this,                args = Array.prototype.slice.call(arguments);                object = args.shift();            return function() {                return fn.apply(object, args.concat(Array.prototype.slice.call(arguments)))            }        }    2. 第二种方式        Function.prototype.bind = function(oThis) {            var fn = this,                args = Array.prototype.slice.call(arguments,1);            return function() {                return fn.apply(oThis, args.concat(Array.prototype.slice.call(arguments)))            }        }function foo() {            return this.bar        }var a = foo.bind({bar: 2},1);var b = a.bind({bar: 3},2);var c = b.bind({bar: 4},3);console.log(c())//第一种方式是4//第二种方式是2
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 408 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信