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>
Function()构造函数与函数直接量的更多相关文章
- JS特殊函数(Function()构造函数、函数直接量)区别介绍
函数定义 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 函数的构造语法有这三种: 1.function functionName(arg0, ...
- 建议13:禁用Function构造函数
定义函数的方法包括3种:function语句,Function构造函数和函数直接量.不管用哪种方法定义函数,它们都是Function对象的实例,并将继承Function对象所有默认或自定义的方法和属性 ...
- Function构造函数
使用Function构造函数, 也能够创建函数, 和使用关键字function定义函数有几点区别: 使用function关键字这样定义函数: var f = function(x,y) {return ...
- js Function()构造函数
var scope="global"; function constructFunction(){ var scope="local"; ...
- JS对象直接量,数组直接量和函数直接量
对象直接量创建一个对象: var obj = {x:[1,2],y:23}; 代码跟下面是一样的. var obj=new Object(); obj.x=new Array(1,2); obj.y= ...
- Scala函数字面量简化写法
Scala提供了多种方法来简化函数字面量中多余的部分,比如前面例子中filter方法中使用的函数字面量,完整的写法如下: (x :Int ) => x +1 首先可以省略到参数的类型,Scala ...
- js拾遗: 函数字面量
今天落叶同学发我一篇文章,我看到一个"新"名词 "函数字面量" (也可叫直接量),当时我就郁闷了,这是什么东西? 我怎么没听说过..回头翻了下权威指南,在第 4 ...
- (转载)JavaScript中匿名函数,函数直接量和闭包
首先,我们先看看下面几种写法:1.function f(x){return x*x;};f(x);2.(function(x){return x*x;})(x);3.(function(x){retu ...
- Javascript的函数直接量定义
在Javascript中允许函数通过直接量来定义.一般情况下,我们定义函数时,最常见的方式是通过function语句进行定义,例如: function sum(a,b){ return a+b ...
随机推荐
- JavaScript-获取当前元素的相关元素或节点--方法总结
1.获取当前元素中的第一个子节点 document.getElementById("uu").firstChild 2.获取当前元素中的第一个子元素 document.getEle ...
- Android APK加壳技术方案
Android APK加壳技术方案[1] Android APK加壳技术方案[2]
- POM报错Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 from
解决方式一: 1.查看.m2\repository\org\apache\maven\plugins\maven-resources-plugin\下maven-resources-plugin- ...
- AJPFX关于Timer类的学习
* Timer类:计时器public class Demo1 { public static void main(String[] args) throws InterruptedException ...
- css:段落文本两端对齐
效果图: Css:
- Android学习笔记(十六) ContentProvider
1.相关概念 ContentProvider:不同应用程序之间进行数据交换的标准API:程序“暴露”数据的方法. ContentResolver:一个程序访问另一个程序被“暴露”的数据的方法. Uri ...
- Oracle | Java日期处理
public class Test{ public static void main (String args []){ j ...
- MFC技术积累——基于MFC对话框类的那些事儿2
3. 绘图 3.1 对话框资源编辑 首先通过添加控件的方式来创建一个简单的绘图对话框如图所示,创建步骤为: 第一.在VC++6.0软件环境的灰色空白区域右击,选中Controls,然后会弹出一个控件对 ...
- AS400服务程序总结
1.服务程序的创建和调用过程 1.1生成module 1.2编写BND文件确定输出接口 1.3生成服务程序 1.3.运行调用程序时,将服务程序导入到作业内存区active group,常驻内存 2.结 ...
- node.js中使用Redis
服务端: 启动Redis服务: redis-server 客户端: 1.安装Redis npm install redis --save 2.redisTest.js文件 //引入red ...