Function()構造函數與函數直接量

Function()構造函數與函數直接量

製做人:全心全意javascript

在JavaScript中,除了可以使用基本的function語句定義函數以外,還可使用另外兩種方式來定義,即便用Function()構造函數和函數直接量定義。這二者之間的區別以下:html

  • 構造函數Function()容許在運行時動態建立和編譯JavaScript代碼,而函數直接量倒是程序結構的一個靜態部分,就像函數語句同樣。
  • 每次調用構造函數Function()時都會解析函數體,而且建立一個新的函數對象,若是對構造函數的調用出如今一個循環中,或者出如今一個常常被調用的函數中,這種方法的效率將很是低。而函數直接量不論出如今循環體仍是嵌套函數中,既不會在每次調用時都被從新編譯,也不會在每次遇到時都建立一個新的函數對象。
  • Function()建立的函數使用的不是靜態做用域,相反地,該函數老是被看成頂級函數來編譯。

例:編寫自定義的JavaScript函數,在該函數中屏蔽鍵盤的回車鍵、退格鍵、F5鍵、Ctrl+N組合鍵、Shift+F10組合鍵。java

注:使用谷歌瀏覽器測試(Ctrl+N也不可用)瀏覽器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文檔</title>
<script type="text/javascript">
	function maskingKeyboard() {
		if (event.keyCode == 8) { //判斷是否爲退格鍵
			event.keyCode = 0;
			event.returnValue = false;
			alert("當前設置不容許使用退格鍵");
		}
		if (event.keyCode == 13) { //判斷是否爲回車鍵
			event.keyCode = 0;
			event.returnValue = false;
			alert("當前設置不容許使用回車鍵");
		}
		if (event.keyCode == 116) { //判斷是否爲F5鍵
			event.keyCode = 0;
			event.returnValue = false;
			alert("當前設置不容許使用F5刷新鍵");
		}
		if ((event.altKey) && (enent.keyCode == 78)) { //判斷是否爲Ctrl+N組合鍵
			event.returnValue = false;
			alert("當前設置不容許使用Ctrl+N新建IE窗口");
		}
		if ((event.shiftKey) && (enent.keyCode == 121)) { //判斷是否爲Shift+F10組合鍵
			event.returnValue = false;
			alert("當前設置不容許使用Shift+F10組合鍵");
		}
	}

</script>
</head>

<body onkeydown="maskingKeyboard()">
	<h1>靜夜思</h1>
</body>
</html>
相關文章
相關標籤/搜索