回答樓下疑問,hasOwnProperty方法無法檢查該對象的原型鏈中是否具有該屬性,所以image.hasOwnProperty(key)拿到的只是對象構(gòu)造函數(shù)中本身的成員,!image.hasOwnProperty(key)拿到的就是對象原型鏈上的屬性,這時候執(zhí)行continue就相當于過濾掉prototype上的屬性了。
ps.老師用的是什么編輯器啊,怎么看著有點像Android Studio
ps.老師用的是什么編輯器啊,怎么看著有點像Android Studio
2016-07-08
已采納回答 / ustbhuangyi
首先,要理解JS是單線程的。也就是說,在一次Event Loop中,會同步執(zhí)行完所有JS代碼。同步任務(wù)是在一次Event Loop中執(zhí)行的JS代碼,去完成相應(yīng)的“任務(wù)”。異步任務(wù)不是一次Event Loop可以做完的,通常JS有幾種方式實現(xiàn)異步,如異步ajax請求,setTimeout,requestAnimationFrame等。動畫庫這個案例中,我們引入了“任務(wù)鏈”這個概念,把一些同步異步的“任務(wù)”添加到任務(wù)鏈上。所有通過timeline創(chuàng)建的動畫都是異步任務(wù),因為它底層用到了requestAnima...
2016-07-08
講師回答 / ustbhuangyi
其實這個幀動畫庫我在百度工作的時候,從一個實際項目需求里抽象出來的。因為我們有大量幀動畫的需求,但又不想為每個需求去編寫那些重復(fù)的代碼,所以就想抽象一個通用的幀動畫庫,方便開發(fā)。當時設(shè)計接口的時候一個很重要的原則,就是怎么讓人用起來爽,就定了鏈式調(diào)用這種方式。后來也發(fā)現(xiàn)這種設(shè)計和promise的一些設(shè)計思想不謀而合。一開始設(shè)計的時候就考慮到大部分接口了,比如loadImage,changePosition,changeSrc,then,repeat,repeatForever,enterFrame,sta...
2016-07-05
講師回答 / ustbhuangyi
首先,要理解JS的執(zhí)行是單線程的,在一輪Event Loop的時候,會執(zhí)行所有同步JS代碼。setInterval的運行機制是,將指定的代碼移出本次執(zhí)行,等到下一輪Event Loop時,再檢查是否到了指定時間。如果到了,就執(zhí)行對應(yīng)的代碼;如果不到,就等到再下一輪Event Loop時重新判斷。這意味著,setTimeout指定的代碼,必須等到本次執(zhí)行的所有代碼都執(zhí)行完,才會執(zhí)行。每一輪Event Loop時,都會將“任務(wù)隊列”中需要執(zhí)行的任務(wù),一次執(zhí)行完。setTimeout和setInterval都是...
2016-07-04