首页 > 解决方案 > 是否可以使用对某个函数的调用属性的引用并将其作为值传递?

问题描述

这不起作用:

-> f = Number.prototype.toLocaleString.call
<- ƒ call() { [native code] }
-> typeof f
<- "function"
-> f(1)
<- Uncaught TypeError: f is not a function
    at <anonymous>:1:1

是否可以引用和使用某些函数的call“方法”并将其用作常规函数?

标签: javascriptfunctionfunctional-programmingfirst-class-functions

解决方案


不,call是一个方法(继承自Function.prototype.call),并且像任何共享方法一样,如果您想将其用作普通函数,则需要将其绑定到其目标。在这种情况下,目标对象是toLocaleString函数:

const f = Function.prototype.call.bind(Number.prototype.toLocaleString);
console.log(f(1));


推荐阅读