我想覆蓋一些函數,因爲我想先加載的函數取決於用戶交互(大部分時間),我只想加載一個空的版本的函數(確保如果調用這個函數,JavaScript不會停止執行並拋出錯誤)。頁面加載後,我想加載實際的功能。如何覆蓋功能?
- 這是個好主意嗎?
- 下面的代碼是否適用於所有瀏覽器?
//for the first time
function name(){}
//after page loaded
function name(){....//long function//..........}
我想覆蓋一些函數,因爲我想先加載的函數取決於用戶交互(大部分時間),我只想加載一個空的版本的函數(確保如果調用這個函數,JavaScript不會停止執行並拋出錯誤)。頁面加載後,我想加載實際的功能。如何覆蓋功能?
//for the first time
function name(){}
//after page loaded
function name(){....//long function//..........}
1.那是好主意嗎?
可能不是,但我們必須知道更多關於您實際需要做的事情;也許對於你的用例來說,這是完全正確的解決方案。或者,提供一些函數可以用來確定其邏輯的狀態信息可能更有意義。
2.下面的代碼可以在所有瀏覽器上使用嗎?
是的,它在規範中定義。如果在同一個範圍內有多個函數聲明,則最下面的一個會勝出。
另外,還可以分配給第一函數聲明創建的標識符:
//for the first time
function name(){}
//when the page loads
name = function() { };
到這樣做的好處是,你可以做一個回調(例如,一個事件處理程序),而(當然)在事件處理函數中編寫函數聲明只是在該事件處理函數的作用域內定義函數。
- 這是一個好主意嗎?
號
- 將它在所有瀏覽器
是工作。
var func = function() {};
window.onload = function() {
func = function() {
...new function definition...
};
};
使用簡單的關閉。
這是一個沒有足夠內容的答案,你甚至回答了什麼? :-) – andlrc
我回答如何加載一個函數,當整個頁面加載。這不是問題嗎? –
OP的問題是,1)這是一個好主意,2)它是否與瀏覽器兼容。問題中的代碼已經處理函數覆蓋。 – 2016-12-03 13:14:43
這聽起來像typicall [XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)恕我直言... ** 1。**'這是否是好事想法?'可能不是! ** 2。**'當然,但爲什麼呢?' –
@ A.Wolff我編輯了一下 – Bucky
你可以隨心所欲覆蓋新功能。如果您需要填充物來吸收有限時間的通話,請執行此操作。 – 2016-12-03 13:05:50