精通JavaScript —— 函数重载和类型检查
其它面向对象的语言如JAVA的一个常见特性是,根据传入的不同数量或类型的,通过重载(overload) 来发挥不同的功用。尽管这个特性在JavaScript中并没有直接支持,也有很多办法能够实现。
函数重载(function overloading)必须依赖两件事情:判断传入参数的数量的能力和判断传入参数类型的能力。
JavaScript的每个函数都带有一个仅在这个函数范围内作用的变量(contextual variable)
称为参数(argument),它是一个包含所有传给参数的伪数组(pesudo-array),所以它并非真正意义上的数组(也就是说你不能修改它,也不能用push来刷新它),但是可以访问其中的元素,它也具有length属性。
例子:JavaScript中函数重载的两个例子
<script>
function sendMessage(msg,obj){
// 如果消息和对象的参数都被提供
if(arguments.length == 2){
// 给对象发送消息
obj.handleMsg(msg);
}else
alert(msg); // 否则仅显示默认的错误信息
}
sendMessage("hello world!"); // 仅传递一个参数,显示错误的提示信息
// 输出结果为:警示框 hello world
/*又或者我们可以将一个我们自己写好的对象传入,负责用另一套办法显示信息*/
sendMessage("how are you?" , {
handleMsg: function(msg) {
alert("This is a custom message:" + msg);
}
});
// 输出结果为:警示框 This is a custom message how are you?
/*
var obj = new Object();//创建一个新对象并将其存放在obj里
obj.val = 5; //将该对象的一些属性设置成不同的值
obj.click = function(){
alert( "hello" );
};
//下面是等效的代码,使用了{...}式缩写,
//和定义对象属性的"名称-值"对
var obj = {
//用名称-值对设置对象属性
val: 5,
click: function(){
alert( "hello" );
}
};
*/
// 一个接受任意数量参数,并转化为数组的函数
function makeArray() {
var arr 
相关文档:
css:
1.
ul标签中FF中有个padding值,却没有margin值,而在IE中正好相反
解决办法:将ul的padding和margin都设为0(也可以不是0)如:padding:0;margin:0;list-style:none;
另外form默认在IE中也会有margin值,所以最好也将其margin和padding设为0
2.   ......
前几天,在图书馆看了一本书叫《JavaScript Dom 编程艺术》从中尝到很多知识或者称其为方法,由于一直在忙,没有时间写出来分享给大家,今天正好有点时间所以就写出来吧,这本书的作者Jeremy Keith 我以前没有听到过这个人,此书中就一段话是说“无论何时地,都要把‘循序渐进’和 ......
//由页面元素date_string(YYYY-MM_DD格式)得到数组date_array
//输入参数:date_string:日期串;marker:日期串date_string里的分隔符,如果没有则为"";
//返回值: 数组:date_array
// 数组元素date_array.year=YYYY;dat ......
eval(str)
用来传入一个字符串动态执行一段脚本,这个方法非常有用。当直接用eval()时,作用域为当前作用域,有时候我们需要让它在全局作用域范围内执行,比如
ajax返回的脚本字符串,然而浏览器对eval的差异可能使事情刚开始并不是那么顺利,本文通过在7种浏览器(IE, Firefox,
Chrome, Safari, Opera)环境中测 ......
Google 排名中的 10 个最著名的 JavaScript 库 收藏
JavaScript 是 Web 开发与设计中不可或缺的东西,不管是一个简单的网页还是一个专业的站点,也不管你是高手还是菜鸟,如今 JavaScript 库越来越强大,可以胜任许多复杂的工作,然而同时,人们在众多 JavaScript 库面前又觉得无所适从,本文,我们将使用 G ......