為什么我這樣寫,會出現原型上沒有定義的這個問題
按照老師的方法寫的,為什么我這個會出現這樣的問題;
var?ball1?=?document.querySelector('.ball1'); var?ball1?=?document.querySelector('.ball2'); var?ball1?=?document.querySelector('.ball3'); var?Promise?=?window.Promise; // // //????function?animation(ball,?distance,cb)?{ //??????????setTimeout(function()?{ //??????????????var?marginleft?=?parseInt(ball.style.marginLeft,10); //??????????????if?(marginleft?===?distance)?{ //??????????????????cb&cb() //??????????????}?else?{ //??????????????????if?(marginleft?>?distance)?{ //??????????????????????marginleft--; //??????????????????}?else?{ //??????????????????????marginleft++; //??????????????????} //??????????????????ball.style.marginleft?=?marginleft; //??????????????????animation(ball,?distance,cb); //??????????????} // //??????????},?13); //??????}; //??????animation(); //?????? //??????animation(ball1,200,function(){ //??????????animation(ball2,300,function(){ //??????????????animation(ball3,400,function(){ //??????????????????animation(ball3,250,function(){ //??????????????????????animation(ball2,250,function(){ //??????????????????????????animation(ball1,250) //??????????????????????}) //??????????????????}) //??????????????}) //??????????}); //??????}); //?????? ???????? ???????? ???????? function?promiseAnimation(ball,?distance)?{ ????return?new?Promise(function(resole,?reject)?{ ????????function?animation(ball)?{ ????????????setTimeout(function()?{ ????????????????var?marginLeft?=?parseInt(ball.style.marginLeft,10); ????????????????if?(marginLeft?===?distance)?{ ????????????????????resole(); ????????????????}?else?{ ????????????????????if?(marginLeft?>?distance)?{ ????????????????????????marginLeft--; ????????????????????}?else?{ ????????????????????????marginLeft++; ????????????????????} ????????????????????ball.style.marginLeft?=?marginLeft; ????????????????????animation(); ????????????????} ????????????},?13); ????????}; ????????animation(); ????}); }; promiseAnimation(ball1,?100) ????.then(function()?{ ????????return?promiseAnimation(ball2,?200) ????}) ????.then(function()?{ ????????return?promiseAnimation(ball3,?300) ????}) ????.then(function()?{ ????????return?promiseAnimation(ball3,?150) ????}) ????.then(function()?{ ????????return?promiseAnimation(ball2,?150) ????}) ????.then(function()?{ ????????return?promiseAnimation(ball1,?150) ????})
2016-04-15
Promise中的animation()函數在定義的時候加了ball這個參數。在調用的時候卻沒有傳參,函數內的ball就是undefined。定義animation的時候去掉參數。讓函數內animation的ball取promiseAnimation()中的參數ball。