Function()构造函数与函数直接量

Function()构造函数与函数直接量

制作人:全心全意

在JavaScript中,除了可使用基本的function语句定义函数之外,还可以使用另外两种方式来定义,即使用Function()构造函数和函数直接量定义。这两者之间的区别如下:

  • 构造函数Function()允许在运行时动态创建和编译JavaScript代码,而函数直接量却是程序结构的一个静态部分,就像函数语句一样。
  • 每次调用构造函数Function()时都会解析函数体,并且创建一个新的函数对象,如果对构造函数的调用出现在一个循环中,或者出现在一个经常被调用的函数中,这种方法的效率将非常低。而函数直接量不论出现在循环体还是嵌套函数中,既不会在每次调用时都被重新编译,也不会在每次遇到时都创建一个新的函数对象。
  • Function()创建的函数使用的不是静态作用域,相反地,该函数总是被当作顶级函数来编译。

例:编写自定义的JavaScript函数,在该函数中屏蔽键盘的回车键、退格键、F5键、Ctrl+N组合键、Shift+F10组合键。

注:使用谷歌浏览器测试(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>
posted @ 2019-01-15 21:44  全心全意_运维  阅读(441)  评论(0编辑  收藏  举报