不想写太多的方法名,网上百度的:
JavaScript 语言的方法声明中,不能明确指定参数的类型和个数,所以不能实现方法的重载,但是我们可以用其他的方法来实现重载的效果。
在 JavaScript 的方法内,有个叫做 arguments 的变量数组,它是只读的,所有实际传入的参数变量都
放在了里面,通过它,我们可以对传入的参数进行类型检查,从而实现重载的效果。
判断一个变量的类型有两种方法
用 typeof 语句:
function check(){
if(typeof arguments[0] == 'string')
alert('你传入的参数是个字符串');
else if(typeof arguments[0] == 'number')
alert('你传入的参数是个数字');
}
用所有 JavaScript 变量都带有的一个属性 constructor,这个属性指向用来构造该变量的构造函数:
function check(){
if(arguments[0].constructor == String)
alert('你传入的参数是个字符串');
else if(arguments[0].constructor == Number)
alert('你传入的参数是个数字');
}
对照表:
typeof constructor ---------------------------
string String
number Number
object Object
function Function
boolean Boolean
object Array
object User
一个新的函数重载模式。代码如下
var FunctionH = {
map: function (arr, callback, pThis) {
var len = arr.length;
var rlt = new Array(len);
for (var i = 0; i < len; i++) {
if (i in arr)
rlt[i] = callback.call(pThis, arr[i], i, arr);
}
return rlt;
},
overload: function (dispatcher, func_maps) {
if (!(dispatcher instanceof Function)) {
func_maps = dispatcher;
dispatcher = function (args) {
var ret = [];
return FunctionH.map(args, function (o) { return typeof o }).join();
}
}
return function () {
var key = dispatcher([].slice.apply(arguments));
for (var i in func_maps) {
var pattern = new RegExp("^" + i.replace("*", "[^,]*").replace("...", ".*") + "$");
if (pattern.test(key)) {
return func_maps[i].apply(this, arguments);
}
}
}
}
}
应用:
TINY.page = function () {
var isNull = function () {
if (document.getElementById("txtPEnterprise_NO").value == "") {
return true;
}
else
return false;
};
return {
select: function () {
if (isNull()) {
top.Dialog.alert("请您输入追溯码!");
return false;
}
else {
return true;
}
},
confirm: FunctionH.overload({
'string': function () {
if (isNull()) {
top.Dialog.alert("请您输入追溯码!");
return false;
}
if (!confirm(arguments[0])) {
return false;
}
return true;
},
'string,object':function(){
// arguments[0];为字符串值
// arguments[1];为object值
},
'object': function () {
if (isNull()) {
top.Dialog.alert("请您输入追溯码!");
return false;
}
var obj = arguments[0];
if (typeof obj == "object") {
var tooltip = obj.getAttribute("title")
if (tooltip == "lock") {
if (!confirm("您确定锁定该批次产品吗?")) {
return false;
}
return true;
}
else if (tooltip == "unlock") {
if (!confirm("您确定解锁该批次产品吗?")) {
return false;
}
return true;
}
}
}
})
}
} ();
调用:
<asp:Button ID="BtnLock" Enabled="false" runat="server" Text="锁 定"
CssClass="blueButtonCss1" onclick="BtnLock_Click" ToolTip="lock" OnClientClick="return TINY.page.confirm(this);"/>
<asp:Button ID="BtnDestory" Enabled="false" ToolTip="destory" runat="server"
Text="销 毁" CssClass="blueButtonCss1" onclick="BtnDestory_Click" OnClientClick="return TINY.page.confirm('确定销毁?');"/>
TINY.page.confirm('确定销毁?',this);
转载自:
http://www.cnblogs.com/bluedream2009/archive/2011/01/05/1925963.html
相关推荐
超全面javaweb教程28天-day3_08_js的函数重载
javascript不能支持函数的重载,如下: 代码如下:[removed] function f(length) { alert(“高为:”+length); } function f(length,width) { alert(“高为:”+length+”,宽为:”+width); } ...
超全面javaweb教程28天-day3_09_js的函数重载二
在面向对象的编程中,很多语言都支持函数重载,能根据函数传递的不同个数、类型的参数来做不同的操作,JS对它却不支持,需要我们额外做些小动作。 在JS的函数执行上下文中有一个名为arguments的有意思的变量,它以...
在上一篇文章里,我们设计了一套能在JavaScript中描述函数重载的方法,这套方法依赖于一个叫做Overload的静态类,现在我们就来看看如何实现这个静态类。
所以Javascript是不能像其他语言一样实现方法名相同,参数个数不同…的这类重载的,不信你可以试试: 代码如下: function show(){ alert(“1”); } function show(num1){ alert(num1); } ...
js中方法重载如何实现?以及函数的参数问题.docx
js中没有办法直接实现方法重载,但每一个函数都有一个特殊的参数arguments,利用它可以实现方法的重载,具体示例如下
JS函数重载 JS函数重载
本文主要介绍了利用JavaScript中的特殊对象arguments来模拟函数重载的解决方案,非常的实用,给需要的小伙伴参考下
JavaScript重载函数实例剖析_.docx
本文实例讲述了PHP实现的函数重载功能。分享给大家供大家参考,具体如下: 由于PHP是弱类型语言,因此函数的输入参数类型无法确定(可以使用类型暗示,但是类型暗示无法用在诸如整型,字符串之类的标量类型上),...
有关于JS构造函数的重载和工厂方法,对此有需要的朋友,参考一下。
说支持,是因为JavaScript函数对参数列表不作任何限制,可以在函数内部模拟对函数重载的支持。 实际上,在很多著名的开源库当中,我们都可以看到函数内部模拟重载支持的设计。例如说jQuery的jQuery.extend方法,就是...
如何实现方法重载,涉及到三个问题:同名函数的调用、函数中特殊的参数arguments、如何利用arguments实现方法重载,需要的朋友可以参考下
用 leFunc 重载你的函数 它基本上提供了一种结构化的方式来检查你的函数。 在构建可以具有多种参数组合的 api 时,它特别有用。 var getItems = leFunc ( { "string" : function ( id ) { // Do something } , ...
Uber 是 Node.js 的函数重载工具。 安装 通过运行使用 npm 安装 Uber npm install uber.js 基本用法 首先,你需要require Uber: var uber = require ( 'uber.js' ) ; 现在你只需要用 Uber 调用的大量参数验证...
主要介绍了JavaScript函数重载操作,结合一次面试经历分析了JavaScript函数重载相关原理、用法及操作注意事项,需要的朋友可以参考下