JavaScript面向对象程序设计(4): 函数
2009-09-11 00:00:00 来源:WEB开发网第三个语句就很有意思了。它创建了一个Function类的对象。这个构造函数(姑且这么叫吧)具有两个参数,第一个是函数的参数,第二个是函数体。具体来说,下面的两个函数定义是等价的:
function sayHelloTo(name) {
alert("Hello, " + name);
}
var sayHelloTo1 = new Function("name", "alert('Hello, ' + name)");
这种使用Function进行定义的方式并不常见,但是这个语句显示的特性却很有趣:它意味着,你可以使用这种构造函数在运行时动态的构造函数!这是一般的语言没有的特性。
2. 函数的参数
JavaScript的函数也是相当的灵活,不仅是它的定义方式多种多样,甚至它的参数都有“奇怪”的行为。由于JavaScript是弱类型的语言,因此,它不能对你的函数参数类型做检测,甚至不能保证你传入的参数个数是否和函数定义一致。这就需要有一些特殊的检测。
function sum2(a, b) {
alert(a + b);
}
sum2(1); // NaN
sum2(1, 2); // 3
sum2(1, 3, 5); // 4
看这个例子,仅仅接受两个参数的函数,在调用时可以有任意个参数!但是,它仅取用符合条件的个数,在这里也就是前两个参数。所以,当你传入一个参数时,JavaScript试图将两个数字加起来,结果第二个参数不存在,因此返回值是NaN。第三种情况,实参个数多于形参个数,此时 JavaScript只取前两个参数相加。
尽管很不正式,但是可以说,JavaScript的函数参数是不定参数,也就是说,你可以传入任意的参数值。使用JavaScript函数内置的arguments就可以遍历所有传入的参数。比如下面的代码:
编缉推荐阅读以下文章
- JavaScript面向对象程序设计(8): 优雅的封装还是执行的效率?
- JavaScript面向对象程序设计(7): 闭包
- JavaScript面向对象程序设计(6): 封装
- JavaScript面向对象程序设计(5): 类
- JavaScript面向对象程序设计(3): 对象
- JavaScript面向对象程序设计(2): 数组
- JavaScript面向对象程序设计(1): 前言
- 理解JavaScript面向对象的思路
- Javascript面向对象详解(第一部分)
- JavaScript面向对象的支持(下)
Tags:JavaScript 面向 对象
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接