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.apply
和Function.prototype.call
函数。在不将apply
函数存储在变量中的情况下,它可以工作。但当我将apply
函数存储到变量中时,它不起作用。
是什么导致了这种奇怪的情况?
apply
期望作为函数的方法进行调用。(即someFunction.apply(...)
(。这将使this
值起作用。
当您将apply
复制到j
,然后调用j()
时;CCD_ 11值是默认值(如果在浏览器中运行,则通常为window
(。
该值不是函数。