[英]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.