1.JS由于不属于纯面向对象的语言,没有真正的重载,但是可以通过另外一些方法实现
- 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
纯面向对象语言实现重载的方式:(在javaScript上模拟展示)
<script type="text/javascript">
/*
函数名相同的情况下:
1、参数个数相同,类型不同,可以自动的区分函数
2、参数个数不同,也可以自动区分函数
*/
function getData() {
alert("将返回所有的数据");
}
function getData(num) {
alert("返回前" + num + "条数据");
}
function getData(num1, num2) {
alert("返回前" + num1 + " - " + num2 + "条数据");
}
function getData(num, type) {
}
getData(20, 100); //调用时,根据参数或者类型的不同而进行调用
</script>
JS实现重载的方式:
<script type="text/javascript">
function getDataAll() {
alert("将返回所有的数据");
}
function getDataTop(num) {
alert("返回前" + num + "条数据");
}
function getDataLimit(num1, num2) {
alert("返回前" + num1 + " - " + num2 + "条数据");
}
function getDataByType(type) {
alert("将返回" + type + "类型的所有数据");
}
function getdata() {
var len = arguments.length; //通过arguments实现,判断参数列表判断调用哪个函数
if (!len)
{
getDataAll();
} else if (len == 1) {
if (typeof arguments[0] == "number") {
getDataTop.apply(this, arguments);
} else {
getDataByType.apply(this, arguments);
}
} else if (len == 2) {
getDataLimit.apply(this, arguments);
}
}
getdata("Array");
getdata(20,100);
</script>
网友评论