官术网_书友最值得收藏!

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 在頁面中屏蔽鼠標右鍵和鍵盤相關事件

主站蜘蛛池模板: 客服| 寿宁县| 普洱| 岳普湖县| 宁都县| 甘孜县| 苍梧县| 正宁县| 达州市| 汉寿县| 黄冈市| 威海市| 阿拉善盟| 元朗区| 天等县| 临泉县| 沁源县| 依安县| 延庆县| 剑阁县| 象州县| 河曲县| 布拖县| 东港市| 香格里拉县| 延吉市| 裕民县| 太和县| 富民县| 乡宁县| 英山县| 桑日县| 平定县| 谷城县| 甘德县| 乌兰浩特市| 厦门市| 六枝特区| 织金县| 长春市| 贵溪市|