麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > JS > 正文

為JavaScript添加重載函數的輔助方法

2024-09-06 12:45:31
字體:
來源:轉載
供稿:網友
JavaScript的重載函數,一般是靠對arguments判斷來操作的。
比如:
代碼如下:
var afunc = function() {
args = arguments;
if(args.length == 1) {
console.log(1);
}else if(args.length == 2) {
console.log(2);
}else if (args.length == 3) {
console.log(3);
}
}

可以想象如果重載數量多的時候,要有多少的if-else判斷啊(事實上重載數量應該不會太多吧)。
如果要對js函數進行重載,代碼量肯定是多的。那么能不能想辦法使代碼清晰點,再減少那些相同代碼的書寫呢?
這就是我寫篇文章和相關代碼的起因了。
慣例先上代碼:
代碼如下:
/** KOverLoad
一個創建重載函數的輔助方法。
其實這個方法只是幫忙整理了參數不同的情況下的重載方法。
如果還要對參數類型進行判斷重載的話,請在提供的方法中自己實現。
@Author ake 2010-05-02
@weblog http://www.cnblogs.com/akecn
*/
var KOverLoad = function(scope) {
this.scope = scope || window; //默認添加方法到這個對象中。同時添加的方法的this指向該對象。
this.list = {}; //存放重載函數的地方。
return this;
};
KOverLoad.prototype = {
//添加一個重載的方法。
//@param arg<Function> 重載的方法。
add:function(arg) {
if(typeof arg == "function") {
this.list[arg.length] = arg; //以參數數量做標識存儲重載方法。很顯然如果你的重載方法參數數量
}
return this;
},
//添加完所有的重載函數以后,調用該方法來創建重載函數。
//@param fc<String> 重載函數的方法名。
load:function(fc) {
var self = this, args, len;
this.scope[fc] = function() { //將指定作用域的指定方法 設為重載函數。
args = Array.prototype.slice.call(arguments, 0); //將參數轉換為數組。
len = args.length;
if(self.list[len]) { //根據參數數量調用符合的重載方法。
self.list[len].apply(self.scope, args); //這里指定了作用域和參數。
}else{
throw new Error("undefined overload type");
}
}
}
};

使用 方法是我覺得比較清晰的方法:
//這是可選的作用對象。
代碼如下:
var s =function(){}
s.prototype = {
init:function() {
console.log();
}
}

//構造函數的參數可以是Object類型的或者其他合法的類型,如果不指定,則注冊到window對象中,并且作用域也是window。其實就是添加該重載方法到什么地方而已。
代碼如下:
new KOverLoad(s.prototype).add(function(a) {
console.log("one",a,this)
})
 .add(function(a,b) {
console.log("two",a,b,this)
})
 .add(function(a,b,c) {
console.log("three",a,b,c,this)
})
 .add(function(a,b,c,d) {
console.log("four",a,b,c,d,this)
})
 .load("func"); //在這里的參數就是要創建的重載函數的方法名稱。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美一级片免费在线观看 | 国产一级性生活视频 | 天堂成人一区二区三区 | 国产美女做爰免费视 | 成年免费在线视频 | 国产女厕一区二区三区在线视 | 成年人国产视频 | 日日摸夜夜骑 | 爱逼爱操综合网 | 欧美18一12sex性处hd | 色网在线视频 | 免费观看一级 | 性猛交ⅹxxx乱巴西 欧美日韩1区2区3区 | 免费视频一区 | 精品国产91一区二区三区 | 毛片中文字幕 | 成人毛片网 | 国产一区日韩一区 | 欧美一级美国一级 | 国产在线导航 | 日本一区二区在线 | 久久爽久久爽久久av东京爽 | 亚洲一级电影在线观看 | 国产一区二区三区在线免费 | 免费看成年人视频在线 | 91麻豆精品国产91久久久更新资源速度超快 | 免费成人 | 精品国产一区二区三区久久久 | 日韩视频一区二区三区在线观看 | 国产成人精品无人区一区 | 免费a级网站 | 久久99国产综合精品 | 91精品免费观看 | 爽成人777777婷婷 | 黄色网址在线免费 | 国产精品99久久久久久久女警 | 久色精品视频 | 国产精品福利一区 | 欧美精品久久天天躁 | 91av久久 | 看一级毛片|