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