- 浏览: 606698 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (300)
- Web前端 (27)
- Java疑难 (60)
- 面试 (59)
- 汇编语言 (1)
- 计算机组成原理 (2)
- 操作系统 (3)
- 计算机网络 (6)
- C/C++疑难 (9)
- SSH (2)
- Web开发 (15)
- 故障 (3)
- 软件开发 (16)
- Portal开发 (1)
- 后台开发 (6)
- 数据库 (35)
- 设计模式 (4)
- 数据结构与算法 (4)
- Linux (3)
- 项目管理 (10)
- 多线程 (12)
- 嵌入式 (9)
- 网络编程 (4)
- 架构设计 (20)
- 软件工具技巧 (7)
- 并行并发 (4)
- 窗口编程 (7)
- 串口编程 (0)
- Flex (2)
- 协议 (1)
- 通讯方式 (4)
- 性能分析优化 (5)
- 测试相关 (4)
- 海量数据处理 (2)
- JAVA核心技术 (10)
- SOA (3)
- 攻略规划 (1)
- 爬虫/搜索 (2)
- 正则表达式 (1)
- A Comparison Of NoSQL Database Management Systems And Models (1)
最新评论
-
charles751:
分析的很好!但有一点:只要同步组合操作就可以了,不一定非要sy ...
Vector 是线程安全的? -
S346618898:
core Java中有一段:Vector类对自己的所有可修改方 ...
Vector 是线程安全的? -
code_cj:
基本上明白了.但执行顺是否应该是/etc/profile -& ...
profile bashrc bash_profile之间的区别和联系 -
xd2008ck:
各自有各自的场景吧楼主不要太激进了
Vector 是线程安全的? -
zwt2001267:
写的不错,赞一个
Vector 是线程安全的?
学过JAVA的人对函数的覆盖和重载肯定是再熟悉不过了。
重载指两个或多个函数的参数类型,顺序和数量以及返回值不一样。
那javascript真的有这种特性么?
回答是JS中函数重名只会采用最后一个定义。
首先来看下下面的代码
代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
//展现结果
function showResult(result) {
var showDiv = document.getElementById('result');
showDiv.innerHTML = '';
showDiv.innerHTML = result;
};
//展现结果2
function showResult2(result) {
var showDiv = document.getElementById('result2');
showDiv.innerHTML = '';
showDiv.innerHTML = result;
};
//展现结果3
function showResult3(result) {
var showDiv = document.getElementById('result3');
showDiv.innerHTML = '';
showDiv.innerHTML = result;
};
//1th测试
//测试同名方法
function testFun() {
showResult('this is a function named \'testFun\' with no arguments.');
};
function testFun(arg) {
showResult('this is a function named \'testFun\' with one argument,the argument is '+arg);
};
//2th测试,交换两个函数的顺序
//测试同名方法
function testFun2(arg) {
showResult2('this is a function named \'testFun2\' with one argument,the argument is '+arg);
};
function testFun2() {
showResult2('this is a function named \'testFun2\' with no arguments.');
};
//3th测试,测试覆盖,同名同参数
function testFun3() {
showResult3('this is a function named \'testFun3\' first.');
};
function testFun3() {
showResult3('this is a function named \'testFun3\' second.');
};
//-->
</SCRIPT>
<BODY>
<hr>1th test <hr>
<div>
<input type='button' onclick='testFun();' value='function with no arguments'/></br>
<input type='button' onclick="testFun('test');" value='function with one argument test'/>
</div>
<div id="result"></div>
<hr>2th test <hr>
<div>
<input type='button' onclick='testFun2();' value='function with no arguments'/></br>
<input type='button' onclick="testFun2('test');" value='function with one argument test'/>
</div>
<div id="result2"></div>
<hr>3th test <hr>
<div>
<input type='button' onclick='testFun3();' value='test function share the same name and arguments.'/></br>
</div>
<div id="result3"></div>
</BODY>
</HTML>
首先按名为 function with no arguments 的按钮
页面的结果为 this is a function named 'testFun' with one argument,the argument is undefined
然后按名为 function with one argument test 的按钮
页面的结果为 this is a function named 'testFun' with one argument,the argument is test
然后按名为 function with no arguments 的按钮
页面的结果为 this is a function named 'testFun2' with no arguments.
然后按名为 function with one argument test 的按钮
页面的结果为 this is a function named 'testFun2' with no arguments.
从以上的测试中我们发现我们只是点换了两个函数的定义顺序,结果大不相同。
从上面的测试中我们可以得出结论: 重载的话,只要函数定义在下面就会覆盖上面的函数定义。
好了,接下来看覆盖。
按名为 test function share the same name and arguments. 的按钮
页面的结果为 this is a function named 'testFun3' second.
测试结果很明显,结论也是和上面相同的。
最终,我们得出结论:
方法重名,JS会以最后定义的函数作为函数体。当然这不包括JS中的继承中的覆盖。
发表评论
-
字符集与字符编码
2013-09-06 00:23 1297摘自http://blog.sina.com.cn ... -
网站前端和后台性能优化的34条宝贵经验和方法
2013-04-15 22:38 10641 减少HTTP请求数量 (Minimize HTTP Re ... -
javascript this关键字用法介绍
2013-04-12 12:05 1017源于http://www.111cn.net/wy ... -
深度理解原型链
2013-04-09 15:15 2061摘自http://www.cnblogs.com/maoro ... -
前端开发必须知道的JS(一) 原型和继承
2013-04-09 12:58 897源自www.cnblogs.com/ljchow/ ... -
CSS样式表继承详解
2013-04-09 00:15 1038什么是继承?要想了解css样式表的继承,我们先从文档树(HT ... -
如何优化JavaScript脚本的性能
2013-04-07 00:08 787循环 循环是很常用的一个控制结构,大部分东西要依靠它来完成 ... -
JavaScript中的隐式类型转换
2013-04-06 23:31 1203如果把通过函数或方法调用,明确的将某种类型转换成另一种类型称 ... -
给定时器settimeout、setInterval调用传递参数
2013-01-17 15:08 1176使window.setTimeout/window.set ... -
浅谈 js中parseInt函数的解析
2013-01-09 22:25 851首先还是从很热门的实例parseInt("09 ... -
round、floor与ceil
2013-01-09 22:16 1078round() 方法可把一个数字舍入为最接近的整数。 ... -
js浮点数精度问题
2013-01-09 21:10 21159大多数语言在处理浮点数的时候都会遇到精度问题,但是在JS ... -
jquery中,html、val与text三者属性取值的联系与区别
2012-01-14 18:49 1767jquery中,html、val与text三者属性取值的联系与 ... -
JS缓存图片实例
2011-12-16 01:02 5801JS缓存图片实例 现有JS功能越来强大了,很多基 ... -
iframe实现无刷新上传文件
2011-12-03 23:29 891[代码] [HTML]代码 view s ... -
js刷新页面代码
2010-10-16 11:15 999先来看一个简单的例子:下面以三个页面分别命名为frame.ht ... -
关于javaScript的IE与FireFox兼容性
2010-10-14 18:30 1439firefox没有window.event对象,其实这个本来不 ... -
js判断浏览器类型
2010-10-14 18:27 1180<!DOCTYPE html PUBLIC " ... -
FireFox与IE禁止右键单击
2010-10-14 14:00 1573<html><head><tit ... -
FireFox与IE事件禁止右键菜单写法的不同
2010-10-14 01:25 2352IE写法 <script> docum ...
相关推荐
学过JAVA的人对函数的覆盖和重载肯定是再熟悉不过了。 重载指两个或多个函数的参数类型,顺序和数量以及返回值不一样。 覆盖指两个或多个函数的参数类型,顺序和数量以及返回值完全一样。 那javascript真的有这种...
本文将详细探讨JavaScript中常用的三种函数类型:可变函数、匿名函数和动态函数。 1、可变函数 在JavaScript中,函数可以接受不同数量的参数,即使它们在定义时没有指定。例如: ```javascript function show() {...
都知道在js中没有办法直接实现方法重载,因为在js中如果定义了多个名称相同,但参数个数不一样的方法,其实只有最后一个方法能被真正调用,其他的方法都被覆盖掉了。 但每一个函数都有一个特殊的参数arguments,利用...
JavaScript的动态类型和灵活的参数特性使得它不适合实现函数重载。JavaScript更强调的是代码的简洁和灵活性,因此语言的设计者选择了不包括函数重载机制,以适应这种灵活性。尽管这样,开发者可以通过其他方式(例如...
"卡拉OK表字段.doc"可能涉及数据库设计,而"Util.js"可能是JavaScript的实用工具库,与Java的构造函数和析构函数主题关系不大。 总的来说,理解和掌握构造函数、析构函数(以及在Java中的`finalize()`方法)、函数...
本篇主要介绍普通函数、匿名函数、闭包函数 ...在Js中函数是没有重载,定义相同函数名、不同参数签名的函数,后面的函数会覆盖前面的函数。调用时,只会调用后面的函数。 var n1 = 1; function add(value1) { retur
通过上述分析,我们可以看出,虽然JavaScript语言没有提供传统意义上的函数重载机制,但是通过变量、函数的动态特性和逻辑判断,我们仍然可以实现类似功能的编程模式。理解JavaScript中函数名作为指针的性质,对于...
本文将深入探讨如何通过修改和改进`jscroll.js`实现动态重载滚动条的功能。 首先,`jscroll.js`是一个JavaScript库,它允许开发者自定义浏览器的默认滚动条样式,提供更美观、符合设计感的滚动效果。原始的`jscroll...
在JavaScript中,如果为同一个对象定义多个同名函数,那么最后一个定义的函数会覆盖前面定义的函数。这意味着,即使参数的数量或类型不同,最终调用的将是最后定义的函数,参数差异并不会影响函数的选择。 接下来,...
JavaScript提供了多种函数表达式,这些表达式可以用来定义不同种类的函数,包括普通函数、匿名函数和闭包函数。下面我们将逐一介绍这些函数种类。 普通函数是最常见的函数类型,它们通过函数声明的方式定义,并且有...
然而,JavaScript不像某些其他语言那样支持函数重载,即具有相同名称但参数列表不同的函数。如果定义了两个同名函数,后面的定义会覆盖前面的。例如: ```javascript function add() { document.write(arguments[0...
这样,虽然不能在语言层面直接重载函数,但在逻辑上我们可以实现类似的效果。 在提供的示例中,首先定义了四个名为testFun1、testFun2、testFun3和testFun4的函数,它们分别接受不同数量的参数。这些函数的作用仅仅...
JavaScript(简称JS)是目前使用最广泛的前端开发语言之一,而函数作为JS中的重要概念,扮演着举足轻重的角色。在本文中,我们将探讨与JS函数相关的一系列知识点,包括函数的定义、声明与表达式的区别、作用域、内部...
【标签】"javascript Explained js类库 类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序" 在JavaScript中,虽然它不是一种传统的面向对象语言,但...
闭包是一个函数和声明该函数的词法环境的组合。闭包让函数可以访问定义时作用域内的变量,即使函数是在当前作用域外执行。文中提到的变量f和匿名函数中的变量f不在同一个作用域内,这就是闭包的一个例子。闭包允许...
在JavaScript编程语言中,存在一些特定的特性,如允许重命名的函数和对象,这可能会导致一些不寻常的行为。本文将深入探讨这些话题,并通过示例进行解释。 首先,JavaScript允许重复声明变量。这意味着,如果你在同...
- **覆盖**:JavaScript中没有函数重载,后定义的同名函数会覆盖前面的。 - **arguments对象**:当传入的参数数量多于定义的参数时,可以通过`arguments`对象访问额外的参数,如`showNames('张三', '李四', '王五'...
需要注意的是,尽管我们可以用这种方式模拟函数重载,但JavaScript中如果存在同名函数,后面的定义会覆盖前面的定义,导致“重载”失效。因此,这种方法并不完全等同于传统意义上的函数重载,而是通过条件判断和`...