您的位置:首页 > Web前端 > JavaScript

[Js] Function、arguments及函数式编程

2006-12-31 14:38 330 查看
参见:
http://www-128.ibm.com/developerworks/cn/web/wa-javascript.html
http://www.knowsky.com/340325.html

arguments是一个类似数组但不是数组的对象,说它类似(仅仅是类似)数组是因为其具有数组一样的访问性质及方式,可以由 arguments
来访问对应的单个参数的值,并拥有数组长度属性length。还有就是arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表(用funcName.length取),而且不能显式创建 arguments 对象。arguments 对象只有函数开始时才可用。

caller

返回一个对函数的引用,该函数调用了当前函数。
functionName.caller
functionName 对象是所执行函数的名称。
说明
对于函数来说,caller 属性只有在函数执行时才有定义。如果函数是由顶层调用的,那么 caller 包含的就是 null 。如果在字符串上下文中使用 caller 属性,那么结果和 functionName.toString 一样,也就是说,显示的是函数的反编译文本。
下面的例子说明了 caller 属性的用法:

// caller demo
}
示例

//callee可以打印其本身
//用于验证参数
//递归计算
比较一般的递归函数:

// 继承的演示
解析:从代码看,该对象仅包含一个方法:Create,其返回一个函数,即类。但这也同时是类的
构造函数,其中调用initialize,而这个方法是在类创建时定义的初始化函数。通过如此途径,
就可以实现prototype中的类创建模式

示例:

var vehicle=Class.create();

var moto=new vehicle("Moto");
moto.showSelf();

下面对 JavaScript 中的函数式风格作一快速总结:

函数并不总是需要名称。
函数可以像其他值一样分配给变量。
函数表达式可以编写并放在括号中,留待以后应用。
函数可以作为参数传递给其他函数。

1,最基础的写函数的风格

function sum(x,y,z) {
return (x+y+z);
}
2,匿名函数

function(x,y,z) {
return (x+y+z);
}
3,函数变量

var sum = function(x,y,z) {
return (x+y+z);
}(1,2,3);
alert(sum);
4,函数表达式

(alert) (“Hello, World!");
5,函数的立即调用

( function(x,y,z) { return (x+y+z) } ) (1, 2, 3);

以上是几种函数的书写风格.另外,声明一个函数还可以用

var func=new function(arg1,arg2,arg3,funcbody);

来进行函数声明.

函数式编程示例:

//动态生成 HTML 的优美代码

//生成动态 HTML 的普通代码
var str=' ';
document.write(str);

//生成动态 HTML 的通用方式

document.write(arr.fold(templateInstance));

//系列函数的应用

//在回调中调用一组函数

//调用系列函数的更好的方式
setTimeout( alertFrst.sequence(alertSec), 5000);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: