[英]Why typeof callback become number?
我有一个非常奇怪的问题,与callback和requestAnimationFrame
。 它一次成功执行,但是第二次回调成为数字。
function TEST () { this.michou = "jean"; } TEST.prototype.talk = function(fn) { window.requestAnimationFrame(this.talk.bind(this)); alert(typeof fn); //type of callback fn(); }; var jean = new TEST(); jean.talk(function() { alert("hello"); });
如果尝试使用此代码,将在警报“功能”“ hello”和“数字”“数字”中看到。 为什么在callback
类型中显示“数字”?
在动画帧中调用.talk()
函数时,没有传递fn
值(尽管传递了某些东西 ;请参见下文)。 如果更改代码,则可以解决此问题:
TEST.prototype.talk = function(fn) {
window.requestAnimationFrame(this.talk.bind(this, fn));
alert(typeof fn); //type of callback
fn();
};
如果在将函数绑定到对象引用时将fn
作为第二个参数传递,则将使用正确的this
值和参数来调用该函数。
您的代码看到的数字值是浏览器传递到动画帧回调的高分辨率时间戳。 如果代码如上所述进行更改,它仍然会通过,但这将是第二个参数,而不是第一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.