当前位置: 首页 > news >正文

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 οnkeydοwn="maskingKeyboard()">
	<h1>静夜思</h1>
</body>
</html>

转载于:https://www.cnblogs.com/zhangquan-yw/p/10274461.html

相关文章:

  • 「PKUWC2018」猎人杀
  • Object 类有哪些方法
  • 为了使用好Apache Flink,Yelp实现了一个连接算法
  • C++多态
  • MariaDB 数据库
  • 应用调试(三)oops
  • 谷歌是 CNCF 开源项目最大贡献者,红帽次之
  • 海南“多规合一”改革促行政审批提速城乡面貌提质
  • jmap命令 Java Memory Map
  • 服务器从安装到部署全过程(二)
  • 对APP单例的统一封装(常规式)
  • 优化关键渲染路径
  • TiDB 3.0 Beta Release Notes
  • 台湾屏东县一肉鸭场检验出禽流感 扑杀6510只肉鸭
  • 山西球迷大范围辱骂裁判被CBA公司罚款2万元
  • 网络传输文件的问题
  • Google 是如何开发 Web 框架的
  • Logstash 参考指南(目录)
  • node.js
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • spring boot下thymeleaf全局静态变量配置
  • tweak 支持第三方库
  • 代理模式
  • 分布式任务队列Celery
  • 理清楚Vue的结构
  • 聊聊redis的数据结构的应用
  • 巧用 TypeScript (一)
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用权重正则化较少模型过拟合
  • 通过npm或yarn自动生成vue组件
  • ​configparser --- 配置文件解析器​
  • ​渐进式Web应用PWA的未来
  • ###C语言程序设计-----C语言学习(6)#
  • #{}和${}的区别?
  • #HarmonyOS:基础语法
  • #include
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (4)logging(日志模块)
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (六)c52学习之旅-独立按键
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (状压dp)uva 10817 Headmaster's Headache
  • .net oracle 连接超时_Mysql连接数据库异常汇总【必收藏】
  • @Autowired @Resource @Qualifier的区别
  • @Autowired标签与 @Resource标签 的区别
  • @DataRedisTest测试redis从未如此丝滑
  • @GlobalLock注解作用与原理解析
  • [ Linux ] Linux信号概述 信号的产生
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [1] 平面(Plane)图形的生成算法
  • [20161214]如何确定dbid.txt
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [Angular] 笔记 20:NgContent
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [C++核心编程](四):类和对象——封装