Javascript学习笔记之函数重载和类型检查
Javascript函数包含一个伪数组(pseudo-array),该数组包含所有传入参数,我们不能修改它,但可以访问其中的成员,该数组也具有length属性。
函数重载依赖于判断传入参数个数和类型的能力。
函数重载的例子:
<html>
<head>
<mce:script type="text/javascript"><!--
function sendMessage(msg,obj){
if(arguments.length == 2)
obj.handleMsg(msg);
else
alert(msg);
}
//一个接受任意数量参数并将其转换为数组的函数
function makeArray(){
var arr = [];
for(var i = 0;i < arguments.length;i++){
arr.push(arguments[i]);
}
return arr;
}
function displayerror(msg){
//如果没有提供参数,类型就是undefined
if(typeof msg == 'undefined'){
msg = "An error occurred.";
}
alert(msg);
}
//用一个变量类型列表严格检查一个参数列表
function strict(types,args){
if(types.length != args.length){
throw "Invalid number of arguments. Expectd "+
types.length+", received "+args.length+
" instead.";
}
//遍历所有参数,检查类型
for(var i = 0;i < args.length;i++){
if(args[i].constructor != types[i]){
throw "Invalid argument type. Expectd "+
types[i].name+", received "+
args[i].constructor.name+" instead.";
}
}
}
//打印用户列表
function userList(prefix,num,users){
//保证prefix是字符串,num是数字,users是数组
strict([String,Number,Array],arguments);
//遍历'num'个用户
for(var i = 0; i < num;i++){
//显示每个用户的信息
alert(prefix+": "+users[i]);
}
}
// --></mce:script>
</head>
<body>
<a onclick="sendMessage('how are you');">call1</a>
<a onclick="sendMessage('how are you',{handleMsg:function(msg){alert('This is a customer message:' + msg);}});">call2</a>
<a onclick="alert(makeArray(1,2,3,4,5));">call3</a>
<a onclick="displayerror();">call4</a>
<a onclick="displayerror('test');">call5</a>
<a onclick="userList('test',2,[1,2,3,4,5]);">call6</a>
</b
相关文档:
<mce:script language="javascript" type="text/javascript"><!--
//需要读取的xml文件
var uRl = "jsReadXml.xml";
var xmlDoc;
//初始化,给上述定义变量赋值
// function showcurcity(){
if(window.ActiveXObject)
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM&q ......
用JavaScript修改网页样式
一、局部改变样式
分为改变直接样式,改变className和改变cssText三种。需要注意的是:
注意大小写
:
javascript对大小写十分敏感,className不能够把“N”写成“n”,cssText也不能够把“T”写成“t”,否则无法实现效果。
调用方法
:
如果改 ......
JavaScript Module Pattern
(
JavaScript
Module
模式)
来源:
1.
http://yuiblog.com/blog/2007/06/12/module-pattern/
2.
http://yuiblog.com/blog/2006/06/01/global-domination/
全局变量是有很大危害的。在
YU ......
引用是一个指向对象实际位置的指针。
例1:
var obj = new Object();
var objRef = obj; //obj与objRef指向同一个对象,objRef是一个引用
自修改(self-modifying)
例2:
var items = new Array("one","two","three");
var itemsRef = items; //创建一个引用
items.push("four");
alert(items.length == items ......