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

Mih*_* B. 5 javascript scope bind function

我遇到的情况是,我想知道函数是否已被绑定,以便在使用callapply使用不同的上下文调用该函数时设置警告消息.

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


var ref = myfn.bind(null);
Run Code Online (Sandbox Code Playgroud)

我检查了Firefox和Chrome控制台中的功能对象,我发现的唯一区别是绑定版本的名称前缀为bound.

> myfn.name
> "myfn"

> ref.name
> "bound myfn"
Run Code Online (Sandbox Code Playgroud)
  1. 这是一个可靠的检查吗?

  2. 是否有更多方法可以找到函数是否已绑定?

*注意:在旧的浏览器不感兴趣(例如:<ie10)

Ber*_*rgi 4

这是一个可靠的检查吗?

不。它只在 ES6 以后有效,但从 ES6 以后它也可能被愚弄,因为.names 现在是可写的。

是否有更多方法来查找函数是否已绑定?

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