当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  AJAX入门之深入理解JavaScript中的函数2

 AJAX入门之深入理解JavaScript中的函数2

点击次数:29 次 发布日期:2008-11-26 11:03:23 作者:源代码网
源代码网推荐      function funcName(){
源代码网推荐   //函数体
源代码网推荐  }
源代码网推荐  //等价于
源代码网推荐  var funcName=function(){
源代码网推荐   //函数体
源代码网推荐  }
源代码网推荐  
源代码网推荐    但前面一种方式创建的是有名函数,而后面是创建了一个无名函数,只是让一个变量指向了这个无名函数。在使用上仅有一点区别,就是:对于有名函数,它可以出现在调用之后再定义;而对于无名函数,它必须是在调用之前就已经定义。例如:
源代码网推荐  
源代码网推荐  
源代码网推荐  <script language="JavaScript" type="text/javascript">
源代码网推荐  <!--
源代码网推荐  func();
源代码网推荐  var func=function(){
源代码网推荐   alert(1)
源代码网推荐  }
源代码网推荐  //-->
源代码网推荐  </script>
源代码网推荐  
源代码网推荐    这段语句将产生func未定义的错误,而:
源代码网推荐  
源代码网推荐  
源代码网推荐  <script language="JavaScript" type="text/javascript">
源代码网推荐  <!--
源代码网推荐  func();
源代码网推荐  function func(){
源代码网推荐   alert(1)
源代码网推荐  }
源代码网推荐  //-->
源代码网推荐  </script>
源代码网推荐  
源代码网推荐    则能够正确执行,下面的语句也能正确执行:
源代码网推荐  
源代码网推荐  
源代码网推荐  <script language="JavaScript" type="text/javascript">
源代码网推荐  <!--
源代码网推荐  func();
源代码网推荐  var someFunc=function func(){
源代码网推荐   alert(1)
源代码网推荐  }
源代码网推荐  //-->
源代码网推荐  </script>
源代码网推荐  
源代码网推荐    由此可见,尽管JavaScript是一门解释型的语言,但它会在函数调用时,检查整个代码中是否存在相应的函数定义,这个函数名只有是通过function funcName()形式定义的才会有效,而不能是匿名函数。
源代码网推荐  
源代码网推荐    函数对象和其他内部对象的关系
源代码网推荐  
源代码网推荐    除了函数对象,还有很多内部对象,比如:Object、Array、Date、RegExp、Math、Error。这些名称实际上表示一个类型,可以通过new操作符返回一个对象。然而函数对象和其他对象不同,当用typeof得到一个函数对象的类型时,它仍然会返回字符串“function”,而typeof一个数组对象或其他的对象时,它会返回字符串“object”。下面的代码示例了typeof不同类型的情况:
源代码网推荐  
源代码网推荐  
源代码网推荐  
源代码网推荐  alert(typeof(Function)));
源代码网推荐  alert(typeof(new Function()));
源代码网推荐  alert(typeof(Array));
源代码网推荐  alert(typeof(Object));
源代码网推荐  alert(typeof(new Array()));
源代码网推荐  alert(typeof(new Date()));
源代码网推荐  alert(typeof(new Object()));
源代码网推荐  
源代码网推荐    运行这段代码可以发现:前面4条语句都会显示“function”,而后面3条语句则显示“object”,可见new一个function实际上是返回一个函数。这与其他的对象有很大的不同。其他的类型Array、Object等都会通过new操作符返回一个普通对象。尽管函数本身也是一个对象,但它与普通的对象还是有区别的,因为它同时也是对象构造器,也就是说,可以new一个函数来返回一个对象,这在前面已经介绍。所有typeof返回“function”的对象都是函数对象。也称这样的对象为构造器(constructor),因而,所有的构造器都是对象,但不是所有的对象都是构造器。
源代码网推荐  
源代码网推荐    既然函数本身也是一个对象,它们的类型是function,联想到C++、Java等面向对象语言的类定义,可以猜测到Function类型的作用所在,那就是可以给函数对象本身定义一些方法和属性,借助于函数的prototype对象,可以很方便地修改和扩充Function类型的定义,例如下面扩展了函数类型Function,为其增加了method1方法,作用是弹出对话框显示"function":
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华