简单的说,“鸭子类型”为:如果若类型语言的函数需要接受参数,则应该先判断参数
类型,并判断参数是否包涵了所需要访问的属性和方法,只有当这些条件都满足时,
程序才会开始正真处理调用参数的属性和方法.
代码示例如下:
function changeAge(person)
{
if(typeof person=="object" && typeof person.age=="number")
{
document.writeln("函数执行前person的age的值为:"+person.age+"<br />");
person.age=10;
document.writeln("函数执行中person的age的值为:"+person.age+"<br />");
}
else{
document.writeln("参数类型不合法:"+typeof person+"<br />");
}
}
changeAge();
changeAge('xxx');
changeAge(true);
p={abc:45};
changeAge(p);
person={age:23};
changeAge(person);
运行结果如下:
参数类型不合法:undefined
参数类型不合法:string
参数类型不合法:boolean
参数类型不合法:object
函数执行前person的age的值为:23
函数执行中person的age的值为:10
这种语法要求:函数对参数执行逻辑操作之前,首先判断参数的数据类型,并检查参
数是否符合条件,只有满足条件才会执行.