如何比较之前独立于上下文(此)界定的功能。我知道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] 删除。
我来说两句