在变量中存储"apply"或"call"函数 - 在 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值起作用。

当您将apply复制到j,然后调用j()时;CCD_ 11值是默认值(如果在浏览器中运行,则通常为window(。

该值不是函数。

最新更新