<!--
函数重载和类型检查
重载是其它面向对象语言的一个普通特性,像Java
(JavaScript是不能直接写重载的,但我们可以通过另
一种方式来实现).
要想实现重载必须知道:所传参数的个数,类型都是什么.
我们就从这入手.
-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>
//arguments 是每个javascript函数内置的一个对象
//返回传入参数的数组
function getArgs(){
var arr = new Array();
for (var i = 0; i < arguments.length; i++) {
arr.push(arguments[i]);
}
return arr;
}
var arr = getArgs("a", "b", "c");
//输出所有参数
for (var i in arr) {
alert(arr[i]);
}
//发送短消息的函数
function sendMessage(msg, obj){
//参数为2
if (arguments.length == 2) {
//对象的属性函数
obj.handleMsg(msg);
}
//一个参数时
else {
alert(msg);
}
}
//一个参数时的调用
sendMessage("Hello,World");
sendMessage("How are you ?", {
handleMsg: function(msg){
alert("This is a custom message:" + msg);
}
});
/**//*
* 类型检查,关键字typeof
*/
function check(str){
if (typeof str == "undefined") {
alert("an error occurred!")
}
else {
alert(str);
}
}
var a = 1;
//用构造函数属性确认对象的类型
if (a.constructor == Number) {
alert(true);
}
//用typeof关键字
if (typeof a == "number") {
alert(true);
}
var s = []; //或var s = new Array();
if(s.constructor == Array)
{
alert("array");
}
</script>
</head>
<body>
</body>
</html>
typeof 和constructor返回类型一览表:
Variable typeof Variable Variable.constructor
{ an: “object” } object Object
[ “an”, “array] object Array
function(){} function Function
“a string” string String
55 number Number
true boolean Boolean
new User() object User