js面向对象编程:怎样实现方法重载
js中怎样实现方法重载?这涉及到三个问题
1同名函数的调用问题
2函数中特殊的參数arguments
3怎样利用arguments实现方法重载
1同名函数的调用问题
都知道在js中假设存在多个名称同样的函数,则调用实际每次都仅仅使用最后一个,js事实上是没有重载的。也就是说。假设定义了多个同名的函数,单參数不一样,在调用时,js无论參数个数,仅仅管前后顺序
比如:
function test1(arg1)
{
alert("參数1:"+arg1);
}
function test1(arg1,arg2,arg3)
{
alert("參数1:"+arg1+"參数2:"+arg2+"參数3:"+arg3); }
//測试代码
function test(){
test1("1")
}
尽管我们调用的是test1("1")。传递了一个參数,但实际调用的却是test1(arg1,arg2,arg3)。并没有由于我们传递了一个參数。而调用仅仅有一个參数的方法。
2函数中特殊的參数arguments
假设我们使用例如以下的代码
function test1(arg1,arg2,arg3)
{
alert("參数1:"+arg1+"參数2:"+arg2+"參数3:"+arg3); }
function test1(arg1)
{
alert("參数1:"+arg1);
}
//測试代码
function test(){
test1("1"。"2")
}
我们知道调用的始终是test1(arg1),也就是仅仅有一个參数的函数,但怎样获取传递的其它參数呢?
这就要用到函数中特殊的參数arguments。arguments包括了全部传递给函数的參数
function test1()
{
var text="";
for(var i=0;i<arguments.length;i++){
text+="參数"+i+":"+arguments[i];
}
alert(text);
}
//測试代码
function test(){
test1("1");
test1("1"。"2");
test1("1"。"2","3");
}
经过測试发现,arguments包括了传递给函数的全部參数,而且arguments.length依据实际传递參数的个数的不同而不同,arguments.length代表了实际传递给函数參数的个数。
3怎样在js中实现函数的重载?
经过以上的測试发现。在js中不能直接实现函数的重载。但有没有办法实现类似重载效果的方法呢?
能够。主要就是利用arguments
比如:
function test1()
{
var text="";
if(arguments.length==1)
{
//调用一个參数的方法
}
else if(arguments.length==2)
{
//调用两个參数的方法
}
else { //其它的方法
}
}
js面向对象编程:怎样实现方法重载的更多相关文章
- PHP面向对象编程——深入理解方法重载与方法覆盖(多态)
什么是多态? 多态(Polymorphism)按字面的意思就是“多种状态”.在面向对象语言中,接口的多种不同的实现方式即为多态.引用Charlie Calverts对多态的描述——多态性是允许你将父对 ...
- JS面向对象编程,对象,属性,方法。
document.write('<script type="text/javascript" src="http://api.map.baidu.com/api?v ...
- Js面向对象编程
Js面向对象编程 1. 什么是面向对象编程? 我也不说不清楚什么是面向对象,反正就那么回事吧. 编程有时候是一件很快乐的事,写一些小游戏,用编程的方式玩游戏等等 2. Js如何定义一个 ...
- JS面向对象编程(进阶理解)
JS 面向对象编程 如何创建JS对象 JSON语法声明对象(直接量声明对象) var obj = {}; 使用 Object 创建对象 var obj = new Object(); JS对象可以后期 ...
- js面向对象编程 ---- 系列教程
原 js面向对象编程:数据的缓存 原 js面向对象编程:如何检测对象类型 原 js面向对象编程:if中可以使用那些作为判断条件呢? 原 js面向对象编程:this到底代表什么?第二篇 原 js面向对象 ...
- 简单粗暴地理解js原型链–js面向对象编程
简单粗暴地理解js原型链–js面向对象编程 作者:茄果 链接:http://www.cnblogs.com/qieguo/archive/2016/05/03/5451626.html 原型链理解起来 ...
- 带你一分钟理解闭包--js面向对象编程
上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...
- js原生设计模式——3简单工厂模式\js面向对象编程实例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 页面循环绑定(变量污染问题),js面向对象编程(对象属性增删改查),js字符串操作,js数组操作
页面循环绑定(变量污染问题) var lis = document.querySelectorAll(".ul li") for ( var i = 0 ; i < lis. ...
- js面向对象编程(第2版)——js继承多种方式
附带书籍地址: js面向对象编程(第2版)
随机推荐
- day63-webservice 08.在web项目中配置带有接口的webservice服务
这个是配置带有接口的WebService的服务. http://localhost:8080/cxf-web-server/service 带有接口的实现类也给它做好了.jaxws:endpoint是 ...
- MYSQL工具之binlog2sql闪回操作
文档结构: 在生产环境中如果遇到误删,改错数据的情况,利用mysql闪回工具binlog2sql,可以实现数据的快速回滚,从binlog中提取SQL,并能生成回滚SQL语句.Binlog以event作 ...
- DWR框架在web.xml的完整配置及注释
<!-- 配置DWR框架 --> <servlet> <servlet-name>dwr</servlet-name> <servlet-clas ...
- css中单位的使用
css中许多的属性都需要添加长度,而长度一般由数字和单位构成,如1px,1.5em,2vh:也可以省略单位,如line-height:1.5,表示行高为字体大小的1.5倍: 长度单位一般也分为相对长度 ...
- Android Toolbar使用及Fragment中的Toolbar处理
Toolbar作为ActionBar使用介绍 本文介绍了在Android中将Toolbar作为ActionBar使用的方法.并且介绍了在Fragment和嵌套Fragment中使用Toolbar作为A ...
- Hibernate框架学习(十)——查询优化
一.类级别查询 1.get方法:没有任何策略,调用即立即查询数据库加载数据. 2.load方法:是在执行时不发送任何SQL语句,返回一个对象,使用该对象时才执行查询:应用类级别的加载策略. 1> ...
- Mock Framework
Typemock Isolator; Rhino Mocks; NMock; MS Fakes(has not same mechanism with NMock) Mock is usually u ...
- C# 学习笔记_类
定义:将成员及方法封装到类中,类的实例则称为对象. 结构:属性,类修饰符,class,类名,{类体} 类修饰符:new,public,protected,internal,private,abstra ...
- 关于编译PCL1.71
最近在编译PCL1.71时总会出现错误, 编译的时候就出现无法生成pcl_io_debug.lib 由于无法生成pcl_io_debug.lib,. 借鉴PCL中国的经验: (1):把io\inclu ...
- public var tap: ControlEvent
extension Reactive where Base: UIButton { /// Reactive wrapper for `TouchUpInside` control event. pu ...