[原创]一个js函数重载功能———续篇

本文介绍如何在JavaScript中创建自定义函数并实现类型转换,包括如何使用switch语句和定义函数的类型。

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

;;;void function(window, undefined){
var $ = {
now:(new Date()).getTime(),
type2string:{},
type:function(s){
return s == null ? 'empty' : ($.type2string[Array.prototype.toString.call(s)] || 'object');
},
switch:function(){
var args = Array.prototype.slice.call(arguments), fn = this;
var i = 0, p , ff = fn[$.now], path = '';
while(p = args[i++]){ path += $.type(p) + ','; }
if(path){ ff = ff[path] }else{ ff = ff['fn'] }
if($.type(ff)!='function'){
if(ff=fn[$.now]['fn']){
return ff.apply(fn,args);
}
throw new Error('function undefined!');
}
return ff.apply(fn,args);
},
defined:function(type,fn,source){
var types = fn[$.now];
if(!types){ types = fn[$.now] = {} }
if($.type(type)=='function'){
types['fn'] = type;
return fn;
}
types[type + ','] = source;
return fn;
}
};
('Object,Function,String,Number,Boolean,Date,RegExp').replace(/[^,]+/g,function(a){
$.type2string['[object ' + a + ']'] = a.toLowerCase();
});
window.fn = {
defined:function(type,f){
var fn = function(){ return $.switch.apply(fn,arguments); };
$.defined(type,fn,f);
fn['defined'] = function(type,f1){ return $.defined(type,fn,f1); };
return fn;
}
};
}(this);
var a = fn.defined(function(a,b){
alert([a,b])
}).defined('string,string',function(s1,s2){
alert(['string|string',s1,s2]);
}).defined('string,object',function(s,o){
alert(['string|object',s,o])
});
a('1');
a('1','2');
a('1',{});
a('1',true);

转载于:https://www.cnblogs.com/code/articles/2393404.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值