asp.net ajax应用技巧之方法的重载

本文介绍了一种在JavaScript中实现方法重载的技术。通过检查参数的数量和类型来选择合适的方法实现,利用apply方法来调用具体实现。示例代码展示了如何为一个Person对象定义多种toString方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在forum中看到一个很有趣的帖子,就是在javascript中实现方法的重载了,如果有兴趣的话去看看Method Overloading with JavaScript吧;本想改简单点再贴上来的,不过还是想想还是算了,原来的例子也不是很复杂。

 

//  Création d'un namespace

Type.registerNamespace(
' Sample ' ); 

 

//  Constructeur de la class Personne

Sample.Person 
=   function (firstName, lastName){

    
this ._firstName  =  firstName; 

    
this ._lastName  =  lastName;

}

 

//  Rajout des différentes méthodes à notre type

Sample.Person.prototype 
=  {

    get_firstName : 
function (){

        
return   this ._firstName; 

    },

    set_firstName : 
function (value){

        
this ._firstName  =  value; 

    },

    get_lastName : 
function (){

        
return   this ._lastName; 

    },

    set_lastName : 
function (value){

        
this ._lastName  =  value; 

    },

    toString : 
function (){

        
if (arguments.length == 1 && Object.getType(arguments[0]) ==
 String){

            
return this.toString$String.apply(this
, arguments);

        } 
else if (arguments.length == 2 && Object.getType(arguments[0]) == String && Object.getType(arguments[1]) ==
 Sample.Person){

            
return this.toString$String$Person.apply(this
, arguments);

        } 
else
 {

            
return this.toString$.apply(this
, arguments);

        }

    },

    toString$ : 
function (){

        
return  String.format( ' je suis {0} {1} ' this .get_firstName(),  this .get_lastName());

    },

    toString$String : 
function (format){

        
return  String.format(format,  this .get_firstName(),  this .get_lastName());

    },

    toString$String$Person : 
function (format, person){

        
return  String.format( ' {0} , {1} ' this .toString(format), person.toString(format));

    }

}

 

//  Enregistrement de notre type dans le framework Atlas

Sample.Person.registerClass(
' Sample.Person ' );

 if(Sys && Sys.Application){Sys.Application.notifyScriptLoaded();}

 

这里的方法的重载 重点就在于arguments这个变量,根据它的length和type判断要调用的方法,当然,每个函数所自带apply方法也功不可没噢

最后,在 .aspx 页面里再加入下面javascript就可以看到效果了。

window.pageLoad  =   function (){

        
var  p  =   new  Sample.Person( ' Cyril ' ' Durand ' );

        
        alert(p.toString());

        alert(p.toString(
' {0} {1} ' ));

        
        
var  p2  =   new  Sample.Person( ' Toto ' ' Bidule ' );

        alert(p.toString(
' {0} {1} ' , p2));

    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值