更好的方法来检查函数是否已经绑定在 JavaScript 中?
Better way to check if function is already bound in plain JavaScript ?
我想知道某个函数是否已经绑定,以便在使用 call
或 apply
调用该函数时设置警告消息语境。
function myfn (){ }
/* or */
var myfn = function () {}
var ref = myfn.bind(null);
我检查了 Firefox 和 Chrome 控制台中的函数对象,我发现的唯一区别是绑定版本的名称以 bound
.
为前缀
> myfn.name
> "myfn"
> ref.name
> "bound myfn"
这个检查可靠吗?
还有更多的方法可以找到
函数已经绑定 ?
*注意:对旧版浏览器不感兴趣(例如:<ie10
)
Is this a reliable check?
没有。它只适用于 ES6,但它也可以从 ES6 开始被愚弄,因为 .name
s 现在是可写的。
Are there more ways to find if function is already bound?
绑定函数没有 .prototype
属性,但请注意还有其他函数具有此特性,例如所有箭头函数。
我想知道某个函数是否已经绑定,以便在使用 call
或 apply
调用该函数时设置警告消息语境。
function myfn (){ }
/* or */
var myfn = function () {}
var ref = myfn.bind(null);
我检查了 Firefox 和 Chrome 控制台中的函数对象,我发现的唯一区别是绑定版本的名称以 bound
.
> myfn.name
> "myfn"
> ref.name
> "bound myfn"
这个检查可靠吗?
还有更多的方法可以找到 函数已经绑定 ?
*注意:对旧版浏览器不感兴趣(例如:<ie10
)
Is this a reliable check?
没有。它只适用于 ES6,但它也可以从 ES6 开始被愚弄,因为 .name
s 现在是可写的。
Are there more ways to find if function is already bound?
绑定函数没有 .prototype
属性,但请注意还有其他函数具有此特性,例如所有箭头函数。