如何比较之前在javascript中有界的函数?

madox2

如何比较之前独立于上下文(此)界定的功能。我知道Function.prototype.bind返回新函数,但是有可能找到对原始函数的引用吗?假设我想实现功能equalsOrigins来为我做这件事:

var func1 = someFunction.bind(obj1);
var func2 = someFunction.bind(obj2);
var func3 = otherFunction.bind(obj1);

func1 === func2; // naturally returns false
equalsOrigins(func1, func2); // should return true
equalsOrigins(func1, func3); // should return false
equalsOrigins(func2, func3); // should return false

这可能在javascript中吗?

贝吉

是否可以找到对原始功能的引用?

不,不是没有访问引擎内部或调试器的权限。绑定函数确实包含对目标函数的引用,但不可访问。

如果函数不引发或返回对象,则最好的选择是将其用作构造函数,并从原型对象重建引用。

function example() { /* sane */ }
var bound = example.bind({});

Object.getPrototypeOf(new bound).constructor == example // true

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章