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>
相关文章
相关标签/搜索