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

JavaScript中函数绑定实现的问题

JavaScript中函数绑定实现的问题

FFIVE 2018-09-15 10:49:10
我看到的实现函数绑定环境的方法是:function bind(fn,context){    return function(){        return fn.apply(context,arguments);     } }我对这个闭包很疑惑,如果不搞闭包,直接:function bind(fn,context){    return fn.apply(context); }不也是能实现绑定吗,设置我连bind函数也不要,在需要绑定的时候直接写:fn.apply(context);所以这个闭包的作用是什么,除了方便传参,还有什么特殊的作用吗?先谢过大家了。
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

首先,你要分清楚函数的定义和执行

function bind(fn,context){    return function(){        return fn.apply(context,arguments);
    }
}

这种情况下 var x = bind(func, obj); 得到的 x 是一个函数,它是可以无限次执行 x() 的。

然后,

function bind(fn, context){    return fn.apply(context);
}

这个 bind 会直接执行 fn,返回的是执行的结果,而不是一个函数。

所以呢,它们的区别就在于,一个是定义了一个函数返回,一个是直接执行的函数。

不过 bind 在 JavaScript 中已经内置为 function 对象的方法了,所以你可以直接用

var f = fn.bind(context);// 其中 fn 是一个函数,得到的 f 是另一个函数


查看完整回答
反对 回复 2018-10-29
  • 1 回答
  • 0 关注
  • 467 浏览
慕课专栏
更多

添加回答

举报

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