其他面向对象语言如JAVA的一个常见特性是,能够根据传入的不同数量和类型的参数,通过重载函数来发挥不同的功用。
函数重载必须依赖两件事情:判断传入参数数量的能力和判断传入参数类型的能力。JavaScript的每个函数都带有一个仅在这个函数范围内作用的变量成为参数(argument),它是一个包含所有传给函数的参数的伪数组,所以它并非真正意义的数组,也就是说你不能修改它,但可以访问其中的元素,它也具有.length属性。此外,虽然显得有点怪,但是还有一个用来判断传入参数类型的方法。如果没有提供参数,它的类型比为undefined,我们要利用这一特性来作判断。
typeof语句的应用为我们引入了下一个话题:类型检查。既然JavaScript是一个动态类型的语言,类型检查必然是个非常有用而且重要的话题。
第一种方法是使用显而易见的typeof操作符,这个工具提供了一个字符串名称,勇于表达变量内容的类型。当变量不是object或者array类型时,这应该算是最完美的解决方法了。
第二种检查对象类型的方法,需要引用所有JavaScript对象都带有的一个属性,称为构造函数。这一属性引用的是原本用来够早该对象的那个函数(constructor)。