WEB开发网
开发学院网页设计JavaScript JavaScript面向对象程序设计(4): 函数 阅读

JavaScript面向对象程序设计(4): 函数

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示:在很多语言中,函数(Java里面成为方法)和对象时截然不同的两种东西,JavaScript面向对象程序设计(4): 函数,函数被定义为对象的动作,或者是全局的(像在C++中的main函数一样),因此发生错误,但是,但是在JavaScript中,函数和对象的界限却显得不那么明显

在很多语言中,函数(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面向对象的支持(下)

1 2 3  下一页

Tags:JavaScript 面向 对象

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接