JavaScript面向对象程序设计(4): 函数
2009-09-11 00:00:00 来源:WEB开发网在很多语言中,函数(Java里面成为方法)和对象时截然不同的两种东西。函数被定义为对象的动作,或者是全局的(像在C++中的main函数一样)。但是在JavaScript中,函数和对象的界限却显得不那么明显。
1. 函数的定义
JavaScript中有很多种定义函数的方法:
function hello() { alert("Hello!"); }
var hello1 = function() { alert("Hello!"); };
var hello2 = new Function("", "alert('Hello!');");
hello();
hello1();
hello2();
上面给出了三种JavaScript的函数定义语句。第一句是常见的定义,看上去和Java等语言没有太大的不同。这句是定义了一个具名函数,按照上面的例子,这里的函数定义名字为hello。第二句是将一个匿名函数定义好后赋值给一个变量,于是通过这个变量就可以引用这个匿名函数。这两句看上去效果差不多,但是它们是不一样的:第一句定义的是一个具名函数,第二句定义的是一个匿名函数——尽管你可以通过这个变量引用到这个匿名函数,但实际上它还是匿名的。它们的区别可以由下面的看出:
hello();
hello1(); // error
function hello() { alert("Hello!"); }
var hello1 = function() { alert("Hello!"); };
具名函数的作用范围是全局的:你可以在定义之前使用这个函数。但是匿名函数的定义是后向的,像C/C++一样,必须在定义之后才能使用。这就是为什么 hello可以使用,但是hello1就会有错误。然后试想一下这是为什么呢?JavaScript的解释过程和HTML一样是从上到下的。所以,这里的匿名函数就相当于是一个变量的定义,因此在JavaScript解释器解释执行时并不知道这个变量的定义,因此发生错误。但是,对于函数的定义则是扫描全局。
编缉推荐阅读以下文章
- JavaScript面向对象程序设计(8): 优雅的封装还是执行的效率?
- JavaScript面向对象程序设计(7): 闭包
- JavaScript面向对象程序设计(6): 封装
- JavaScript面向对象程序设计(5): 类
- JavaScript面向对象程序设计(3): 对象
- JavaScript面向对象程序设计(2): 数组
- JavaScript面向对象程序设计(1): 前言
- 理解JavaScript面向对象的思路
- Javascript面向对象详解(第一部分)
- JavaScript面向对象的支持(下)
Tags:JavaScript 面向 对象
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接