日期:2014-05-16  浏览次数:20343 次

javascript面向对象技术基础(三)

原文:javascript面向对象技术基础(三)

函数
javascript函数相信大家都写过不少了,所以我们这里只是简单介绍一下.
创建函数:
function f(x) {........}
var f = function(x) {......}
上面这两种形式都可以创建名为f()的函数,不过后一种形式可以创建匿名函数
函数定义时可以设置参数,如果传给函数的参数个数不够,则从最左边起依次对应,其余的用undefined赋值,如果传给函数
的参数多于函数定义参数的个数,则多出的参数被忽略.

?

Js代码
  1. function ?myprint(s1,s2,s3)?{??
  2. ????alert(s1+"_" +s2+ "_" +s3);??
  3. }??
  4. myprint();??????//undefined_undefined_undefined ??
  5. myprint("string1" , "string2" );? //string1_string2_undefined ??
  6. myprint("string1" , "string2" , "string3" , "string4" );? //string1_string2_string3 ??
function myprint(s1,s2,s3) {
    alert(s1+"_"+s2+"_"+s3);
}
myprint();      //undefined_undefined_undefined
myprint("string1","string2"); //string1_string2_undefined
myprint("string1","string2","string3","string4"); //string1_string2_string3

?

因此,对于定义好的函数,我们不能指望调用者将所有的参数全部传进来.对于那些必须用到的参数应该在函数体中
加以检测(用!操作符),或者设置默认值然后同参数进行或(||)操作来取得参数.

?

Js代码
  1. function ?myprint(s1,person)?{??
  2. ????var ?defaultperson?=?{??? //默认person对象 ??
  3. ????????"name" : "name1" ,??
  4. ????"age" :18,??
  5. ????"sex" : "female" ??
  6. ????};??
  7. ????if (!s1)?{???? //s1不允许为空 ??
  8. ????????alert("s1?must?be?input!" );??
  9. ????return ? false ;??
  10. ????}??
  11. ????person?=?person?||?defaultperson;??//接受person对象参数 ??
  12. ????alert(s1+"_" +person.name+ ":" +person.age+ ":" +person.sex);??
  13. };??
  14. ??
  15. myprint();?//s1?must?be?input! ??
  16. myprint("s1" );? //s1_name1:18:female ??
  17. myprint("s1" ,{ "name" : "sdcyst" , "age" :23, "sex" : "male" });?? //s1_sdcyst:23:male ??