更好的方法来检查函数是否已经绑定在 JavaScript 中?

Better way to check if function is already bound in plain JavaScript ?

我想知道某个函数是否已经绑定,以便在使用 callapply 调用该函数时设置警告消息语境。

function myfn (){ }
/* or */
var myfn = function () {}


var ref = myfn.bind(null);

我检查了 Firefox 和 Chrome 控制台中的函数对象,我发现的唯一区别是绑定版本的名称以 bound.

为前缀
> myfn.name
> "myfn"

> ref.name
> "bound myfn"
  1. 这个检查可靠吗?

  2. 还有更多的方法可以找到 函数已经绑定 ?

*注意:对旧版浏览器不感兴趣(例如:<ie10

Is this a reliable check?

没有。它只适用于 ES6,但它也可以从 ES6 开始被愚弄,因为 .names 现在是可写的。

Are there more ways to find if function is already bound?

绑定函数没有 .prototype 属性,但请注意还有其他函数具有此特性,例如所有箭头函数。