http://codepen.io/Lewitje/pen/GjqbbA爲什麼這個函數聲明兩次?回調函數在哪裏聲明?
看着這個,試圖弄清楚發生了什麼讓我氣餒。最近我一直在深入研究JavaScript,並且我理解對象,構造函數,原型等等,並且在CSS上,我知道關鍵幀,畫布,座標等動畫,但看着這個我知道也許有40-50%的javascript是寫在那裏。
1)我知道的類和構造被聲明(這是相對較新的JavaScript的?)
2)的jQuery。每個方法用於粘貼標籤A1,A2等與setupLabels()
3)各種不同的功能,以顯示在錶盤上衝的數量,移動臂,移動罐等
現在,這是它得到混亂對我來說:
setPosition(x, y, callback){
$('.hand').on('transitionend',()=>{
$('.hand').off('transitionend');
setTimeout(function(){
callback();
}, 500);
});
this.calculateVelocity(x, y, (velX, velY)=>{
$('.arm').css({
'top': (y + 35) + 'px',
'transition-duration': velY + 's'
});
$('.hand').css({
'left': (x + 5) + 'px',
'transition-duration': velX + 's',
'transition-delay': velY + 's'
});
});
}
calculateVelocity(x, y, callback){
var currentX = $('.hand')[0].offsetLeft;
var currentY = $('.arm')[0].offsetTop;
var velX = Math.ceil((Math.max(currentX, x) - Math.min(currentX, x))/70);
var velY = Math.ceil((Math.max(currentY, y) - Math.min(currentY, y))/70);
callback(velX, velY);
}
}
我猜this.calculateVelocity是事實上,調用函數和=之後出現的是定義回調函數?
如果是這種情況,setPosition中的回調如何工作,因爲它尚未定義?
嗨,謝謝你的幫助。這個新的Class讓我感到困惑,通常我們會使用函數聲明一個方法,然後分別調用它,但是在這種情況下,函數前綴甚至不會被使用一次? – kshatriiya
@kshatriiya你能更具體嗎? – JosephGarrone
@JsoephGarrone,在上面的代碼塊中,setPosition(x,y,callback){} 是方法聲明。我可以告訴這個方法是在.js文件中的getPosition()方法中調用的。但是通常情況下,如果我們想要定義一個方法,我們可以使用函數setPosition(x,y,callback){}? – kshatriiya