<!--
函數重載和類型檢查
重載是其它面向對象語言的一個普通特性,像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