2013-07-08 51 views
2

我知道下面的代碼清除畫布canvas.width = canvas.width如何在內部工作?

canvas.width = canvas.width 

但內部是怎樣工作的呢?

賦值運算符只是爲變量賦值,但上面的代碼如何清除畫布?

根據JavaScript規則。賦值運算符僅用於爲某個變量賦值。

但是有沒有辦法通過賦值給變量來調用其他函數?

+0

通過清除畫布,你是什麼意思?阿倫;你應該使用'clearRect'方法? – mohkhan

+0

[How to clear the canvas for redrawing]的可能重複(http://stackoverflow.com/questions/2142535/how-to-clear-the-canvas-for-redrawing)(請參閱最高投票答案)。 –

+0

@FrédéricHamidi我的問題是不同的傢伙。我想知道它是如何在內部工作的。我知道我的代碼清晰的畫布。請仔細閱讀問題。 –

回答

5

當您設置一個新值某些瀏覽器不會檢查它是否與舊值相同,只是繼續並在內部重新分配新的位圖(因此爲清除)(高級語言可能給出這樣的錯覺:你可以動態地改變一個位圖的大小,但事實並非如此,舊的內存需要被釋放,然後再被分配)。

右手參數被「翻譯」爲JavaScript引擎保存的值,因此它的傳遞方式與其他任何值一樣。

但是,這是而不是推薦的方式來清除畫布。它現在可能在某些瀏覽器中運行,但在將來它不能確定,因爲這不是規範的一部分。