在变量中存储 "apply" 或 "call" 函数 - 在 JS 中

Storing a "apply" or "call" function in a variable - in JS

const j = Object.prototype.valueOf.apply

console.log(typeof j); // "function"
console.log(Object.prototype.valueOf.apply === j); // true

console.log(Object.prototype.valueOf.apply(3)); // WORKS
console.log(j(3)); // ERROR! TypeError: j is not a function

我在 JS 中发现了一些奇怪的情况,关于 Function.prototype.applyFunction.prototype.call 函数。无需将 apply 函数存储在变量中,它就可以工作。但是当我将 apply 函数存储到变量时,它不起作用。

是什么导致了这种奇怪的情况?

apply 期望作为函数的方法被调用。 (即 someFunction.apply(...))。这将使 this 值发挥作用。

当你复制applyj然后调用j()this 值是默认值(如果您在浏览器中 运行,则通常为 window)。

该值不是函数。