- JavaScript從入門到精通(第3版)
- 明日科技
- 658字
- 2020-03-20 10:37:32
4.8 Function()構造函數與函數直接量
除了可使用基本的function語句定義函數之外,還可使用Function()構造函數和函數直接量來定義函數。這兩者之間存在很重要的差別。
構造函數Function()允許在運行時動態創建和編譯JavaScript代碼,而函數直接量卻是程序結構的一個靜態部分,就像函數語句一樣。
每次調用構造函數Function()時都會解析函數體,并且創建一個新的函數對象。如果對構造函數的調用出現在一個循環中,或者出現在一個經常被調用的函數中,這種方法的效率將非常低。而函數直接量不論出現在循環體還是嵌套函數中,既不會在每次調用時都被重新編譯,也不會在每次遇到時都創建一個新的函數對象。
Function()創建的函數使用的不是靜態作用域。相反地,該函數總是被當作頂級函數來編譯。
【例4.6】 通過自定義函數實現屏蔽鼠標和鍵盤相關事件。(實例位置:資源包\TM\sl\4\06)
為了確保網站資源的安全,很多網站都會對用戶的一些操作進行限制,如屏蔽鼠標右鍵等。這些功能通過JavaScript即可實現。
(1)編寫自定義的JavaScript函數maskingKeyboard(),在該函數中屏蔽鍵盤的Enter鍵、Backspace鍵、F5鍵、Ctrl+N快捷鍵、Shift+F10快捷鍵,代碼如下:

(2)在頁面的<body>標記的鍵盤按下事件onkeydown中,調用maskingKeyboard()函數屏蔽鍵盤的相關事件,代碼如下:
<body onkeydown="maskingKeyboard()">
(3)編寫自定義的JavaScript函數rightKey(),用于屏蔽鼠標右鍵。rightKey()函數的代碼如下:

(4)在文檔的onmousedown事件中調用rightKey()函數,用于屏蔽用戶在頁面中右擊時所觸發的事件,代碼如下:
document.onmousedown=rightKey; //當鼠標右鍵被單擊時,調用rightKey()函數
運行程序,在頁面中按下Enter鍵、Backspace鍵、F5鍵、Ctrl+N快捷鍵、Shift+F10快捷鍵以及鼠標右鍵時,都將給予提示,并且屏蔽掉這些事件所觸發的動作。例如,右擊時,將彈出如圖4.6所示的提示對話框。

圖4.6 在頁面中屏蔽鼠標右鍵和鍵盤相關事件
- Dynamics 365 for Finance and Operations Development Cookbook(Fourth Edition)
- TypeScript入門與實戰
- Rust實戰
- Git高手之路
- NativeScript for Angular Mobile Development
- VSTO開發入門教程
- Ray分布式機器學習:利用Ray進行大模型的數據處理、訓練、推理和部署
- Python時間序列預測
- 區塊鏈架構之美:從比特幣、以太坊、超級賬本看區塊鏈架構設計
- Python Digital Forensics Cookbook
- Mastering Embedded Linux Programming
- ROS機器人編程實戰
- ArcPy and ArcGIS(Second Edition)
- Go Systems Programming
- Flask開發Web搜索引擎入門與實戰