在javascript中实现函数数组的方法
js与java之类的语言一个最大的不同之处在于函数也被视为数据,能够像java中的一个对象一样操作。并且由于js不进行类型检查,数组可以存放任何东西。于是我就想数组里可否存放函数呢。
实现以下功能:
函数在调用后把自己存放到数组中(可根据参数不予存放)
然后可以用一个大函数来操作数组,调用其中的函数。
本来我想用这个方法执行一次Undo功能(就是每个函数把自己存放进去,如果Undo则剔除最后一个函数,把整个队列执行一遍),后来觉得这样太麻烦。不过函数数组的功能倒是实现了:贴上JSP
代码如下:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>MothedList</title>
</head>
<body>
<input type="button" onclick="ff()" />
<script type="text/javascript">
list = new Array;
f1 = function f1(flage) {
alert("f1");
if (flage)
list.push(f1);
}
f2 = function f1(flage) {
alert("f2");
if (flage)
list.push(f2);
}
function ff() {
f1(true);
f2(true);
f = list.pop();
f(false);
f = list.pop();
f();
}
</script>
</body>
</html>
相关推荐
-
如何将php数组或者对象传递给javascript
在网上搜了一些方法,最后自己采用的是通过json字串的方式. 假设有一个php 数组 $arr,代码如下: 复制代码 代码如下: <script> // html5中默认的script是javascript,故不需要特别指定script language var arr_js = <?php echo json_encode($arr)?>; </script>
-
javascript数组快速打乱重排的方法
复制代码 代码如下: var arr = [1,2,3,4,5,6,7,8,9,10];var out = arr.sort(function(){ return Math.random() > 0.5;}
-
javascript数组操作总结和属性、方法介绍
一.数组的操作 1.数组的创建 复制代码 代码如下: var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]);//创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了
-
javascript删除数组元素并且数组长度减小的简单实例
实例如下: 复制代码 代码如下: /** * 通过值删除数组元素 * * @param mixed value 元素值 * @returns array */Array.prototype.deleteValue = function(value){ var i = 0; for(i in this){ if(this[i] == value) break; } return this.slice(0, i).concat(this.slice(parseInt(i, 10) + 1));
-
Javascript中的Array数组对象详谈
首先数组的定义以及初始化的方法: var myArray = new Array(1,3.1415,"love"); //这里注意myArray数组中的元素不只是同一种数据类型的元素,可以有整形,有浮点型,有字符串等等都可以.这里充分展示了javascript作为一种语言对数据类型的弱化,语言更加的随意化,简便化.就行定义对象的时候用var一样. 在此介绍的有限,同时有一些我没有给出结果,希望大家自己体会,自己动手尝试一下,看看结果到底是什么,这样有助于记忆.以下带[]是可以省去的参数
-
利用javascript数组长度循环数组内所有元素
复制代码 代码如下: <script type="text/javascript"> <!--var arr = new Array(13.5,3,4,5,6);for(var i=0;i<arr.length;i++){ arr[i] = arr[i]/2.0;}alert(arr); //--> </script>
-
JavaScript实现多维数组的方法
在C#里,定义多维数组,可以通过这样简单的代码实现: 复制代码 代码如下: int[,]myArray=new int[4,5]; 在JavaScript中不能通过直接定义实现多维数组,那么该怎么实现呢?首先定义一维数组: 复制代码 代码如下: var myArray=new Array(); 然后再将一维数组的成员定义成数组(之所以可以进行再定义,因为JavaScript是弱类型): 复制代码 代码如下: myArray[0]=new Array(); 到此为止,就定义了一个第一个索引为0的二
-
Javascript连接多个数组不用concat来解决
第一种方法就是大家熟知的concat,但是这个方法有一个确定就是该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 如果只是想把一个新数组的元素加到现有数组中,我们还要为其重新赋值,其实存在有一点点资源的浪费.简单的说,我们要为新创建的数组分配新的内存空间,并且把arr1重新指向这个新内存地址,那么原来那个内存中的数组呢,嘿嘿 那就要看浏览器能不能正确回收喽. 如下例: 复制代码 代码如下: var arr1 = [1,2,3]; var arr1 = arr1.concat([4,5
-
javascript创建数组之联合数组的使用方法示例
复制代码 代码如下: //js中的数组可以以键值对的方式存在 var arr = new Array(); arr["A"] = "boss"; arr["B"] = "Emp"; for (var m in arr) { document.write(arr[m] + " "); } var pers
-
javascript中数组的concat()方法使用介绍
复制代码 代码如下: <html> <head> <title>数组的concat()方法</title> <script> /* 数组的concat()方法: 1.该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. 2.返回一个新的数组.该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的. 如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组. */ var arr1 = [
-
javascript中数组的sort()方法的使用介绍
复制代码 代码如下: <html> <head> <title>数组的sort()方法</title> <script> /* sort() 1.没有产生副本,直接引用原数组 2.如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序, 说得更精确点,是按照字符编码的顺序进行排序. 要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较. 3.如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值, 然后返
-
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
JavaScript 1.6 引入了几个新的Array 方法,具体的介绍见:New in JavaScript 1.6 .这些方法已经被写进了ECMA262 V5.现代浏览器(IE9/Firefox/Safari/Chrome/Opera)都已经支持,但IE6/7/8不支持.jquery的工具方法中提供了类似的功能. 1.Array.forEach()和jquery的$().each().在数组中的每个项上运行一个函数.类似java5 增强的for循环. 复制代码 代码如下: var ary =
-
javascript数组操作(创建、元素删除、数组的拷贝)
1.数组的创建 复制代码 代码如下: var arrayObj = new Array(); //创建一个数组var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以
-
javascript向后台传送相同属性的参数即数组参数
我们在传送参数时,经常会碰到向后台传送一些相同属性的参数,最好的选择是采用数组的方式.当我们向后台传送时只需要在javascript中正常定义并使用数组,将其作为参数向后台传递: 复制代码 代码如下: var arry= new Array(); arry[0] = "102"; arry[1] = "103"; arry[2] = "104"; url = "test.jsp?arry="+arry; 在后台的接受方法: [
-
javascript中数组的冒泡排序使用示例
复制代码 代码如下: <html> <head> <title>数组的排序</title> <script> var arr = [2,4,9,11,6,3,88]; //采用冒泡排序,向上冒泡,最小值在最上边 for(var x = 0 ; x < arr.length; x++){//控制趟数 for(var y = x + 1 ; y < arr.length ; y++){ //依次比较,如果后面的元素大于前面的元素则交换 i
-
javascript 数组排序函数sort和reverse使用介绍
首先我们先说一下reverse方法. reverse 方法将一个 Array 对象中的元素位置进行反转.在执行过程中,这个方法并不会创建一个新的 Array 对象. 例如: 复制代码 代码如下: var array1 = ['a','cc','bb','hello',false,0,3]; var array2 = [3,5,2,1,7,9,10,13]; array1.reverse(); array2.reverse(); alert(array1); alert(array2); 如果数组
-
Javascript中克隆一个数组的实现代码
08年一家公司JS面试题,职位是javascript工程师(赴google) 面试官问我如何克隆一个数组,当时想了下js的Object没有clone方法,java的Object有. 那怎么得到一个新数组呢? 我当时回答:用一个loop将源数组元素依次push到新数组中.这是最简单的方法,但显然不是面试官想要的答案. 最后告知我:利用Array的slice方法.示例如下: 复制代码 代码如下: var ary = [1,2,3];//源数组 var ary2 = ary.slice(0);//克隆
-
javascript中数组中求最大值示例代码
复制代码 代码如下: <html> <head> <title>数组的最大值的获取</title> <script> //定义数组 var arr = [1,4,3,9,5,0,-1,7,22]; //最大值的下标,先假定为第一个元素的下标 var index = 0; for(var x = 0; x < arr.length; x++){ if(arr[index] < arr[x]){ index = x; } } docume
随机推荐
- iOS开发之通过银行卡号获取所属银行名称
- JavaScript 拖拉缩放效果
- 深入PHP数据缓存的使用说明
- Zend的Registry机制的使用说明
- Python中的面向对象编程详解(下)
- Android检查手机网络状态及网络类型的方法
- Android星级评分条控件RatingBar使用详解
- 洗洗睡吧,没什么大不了的(人生励志篇)
- 解决BootStrap Fileinput手机图片上传显示旋转问题
- js下关于onmouseout、事件冒泡的问题经验小结
- Linux查找包含指定文字的文件(linux查找指定文件)
- python下paramiko模块实现ssh连接登录Linux服务器
- Mac OS X/Linux系统下清除DNS缓存命令整理
- Java编程中利用InetAddress类确定特殊IP地址的方法
- Android仿微信雷达扫描效果的实现方法
- 多种灭蟑螂的方法分析
- java编程之递归算法总结
- jQuery图片查看插件Magnify开发详解
- Redis集群与SSM整合使用方法
- python正则表达式及使用正则表达式的例子