关于JavaScript中函数的一些技巧

一、关于函数的写法及调用

 

  (1),JavaScript函数定义在一些地方是不同于C++,.NET,JAVA等面向对象语言的,这些语言都有函数重载的概念。如:


Code

  上面的函数sum实现的是整数的相加,调用时根据输入参数的不同决定其调用的是哪个函数。

  但是在JavaScript中函数却不能这样写重载函数,这这会引起混乱。如:

Code

  按照我们的习惯思维,当show函数中不参入参数时,应该调用的是第一个函数,弹出的警告框应该是“good”,但是运行后我们就会发现警告框的内容是“NaN”,这里系统调用的是最后一个函数,即show(s,w);当调用show('yes')时,它弹出的不是"yes",而是"yesundefined",这里系统调用的也是最后一个函数,即show(s,w);当调用show('yes','no')时,弹出的是"yesno",这里系统调用的还是最后一个函数,即show(s,w);当调用show('yes','no','cancel'),结果同show('yes','no')。说明后面的函数会覆盖前面的同名函数。至于为什么会产生这种结果,请接着往下看下面一段话,你就会明白了。。。。

  由于函数被覆盖了,show函数定义为最后一个函数。。。而在JavaScript中,如果在函数调用时省略了参数(如show(),show('yes')),则省略的参数(s,w和w)会以undefined类型传递。如果在调用时提供了函数声明所不需要的多余参数(如show('yes','no','cancel')),多余的参数('cancel')会被忽略。。。

 

  (2),特殊情况

   

  请看下面函数的运行 结果。

 

Code

 

   当我们调用show("伟大的","中华人民","共和国")时,会弹出“伟大的中华人民共和国”。按照上面的思路,里面的参数应该是被JavaScript解释器忽略掉的,但是这里不会,因为我们在写处理函数的时候已经做了参数处理,arguments为传入函数的参数数组。

 

二、函数声明的放置位置

 

   函数有两个个存放位置

  

  1,直接放置在js文件的最顶层  2,放置在一个对象中

 

  (1),直接放置在js文件中非常之简单也非常常见,调用也十分清晰。

 

//声明
function show()
{
      alert(
"成功");
}

//调用
show();

   (2),在对象中写函数其实也非常常见。由于对象分三种(1,内置对象 2,JSON对象 3,自定义对象),所以这里也分三种情况讨论。

 

  (a) ,内置对象中的函数

 

//定义
String.prototype.trim = function() 
{
    
return this.replace(/(^\s*)|(\s*$)/g, "");
}

//调用
var str = "  我的左右边都有空格  ";
alert(str.trim());

 

  (b)JSON对象中的函数

 

//定义JSON对象obj中的show方法
var obj = {
      show:
function(){
            alert(
"成功");
      }
}

//调用
obj.show();

 

   (c),自定义对象中的函数,这是JavaScript开发者应用函数最为常见的地方

 

//定义自定义对象obj中的show函数
function obj()
{
      
this.show = function()
      {
            alert(
"成功");
      }
}

//调用
var aaa = new obj();
aaa.show();

 

 

 

posted @ 2009-10-17 15:33  爱生活,爱GIS  阅读(406)  评论(0编辑  收藏  举报