你好,我是完全新的JavaScript和我試圖做一些事情,但是當我把這個功能我不明白:setInterval的調用方法(這)調用它只有一次
this.start = function() {
this.interval = setInterval(startIncrement.call(this) , 1000);
}
startIncrement只執行一次。我嘗試這樣做,產生兩個按鈕Counter類(啓動和停止)和一個textbox.So當我這樣做:
var a = new Counter(); // generates object of Counter
a.init(); // generates the HTML (did that part)
a.start(); //start increasing the value of text box over period of time
a.stop(); // stops the counting (did that part)
和按鈕啓動和停止只需調用啓動和停止計數的方法onclick事件。我試過這個問題的所有答案setInterval only runs once on object method但它沒有工作,現在我卡住了。
該問題的第一個答案是對你的問題的回答:setInterval需要一個函數傳遞給它,並且你傳遞調用你的「startIncrement」函數的結果。也許你的意思是'.bind()'而不是'.call()'。 – Pointy
是的,現在你說它是完全合理的,但可悲的是我不知道何時使用呼叫,綁定或應用我已經閱讀過有關它們,但我似乎濫用它們..你能解釋一下嗎?如果你有時間,我如何工作?提前致謝。 P.S我已經問過這樣做了,但是如果你想要的話,你也可以這樣做:) – kuskmen
@spender解釋了'.bind()'這是三個中的唯一一個讓你回到以後使用的函數。 '.call()'和'.apply()'都是立即調用函數的方法;他們在細節上有所不同,但他們基本上是一樣的。 – Pointy