天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

添加JavaScript重載函數(shù)的輔助方法2

代碼依然簡(jiǎn)單。所以依然沒(méi)什么好解釋的。。
復(fù)制代碼 代碼如下:
/** KOverLoad
一個(gè)創(chuàng)建重載函數(shù)的輔助方法。
補(bǔ)充上次的函數(shù)。
@Author ake 2010-07-03
@weblog http://www.cnblogs.com/akecn
*/
var KOverLoad = function(scope) {
this.scope = scope || window; //默認(rèn)添加方法到這個(gè)對(duì)象中。同時(shí)添加的方法的this指向該對(duì)象。
this.list = {}; //存放重載函數(shù)的地方。
return this;
};
KOverLoad.prototype = {
//添加一個(gè)重載的方法。
//@param arg<Function> 重載的方法。
add:function(arg, types) {
if(typeof arg == "function") {
var types = (types || []).join(",");
this.list[arg.length + types] = arg; //以參數(shù)數(shù)量和類型做標(biāo)識(shí)存儲(chǔ)重載方法。很顯然如果你的重載方法參數(shù)數(shù)量
return this;
}
},
checkTypes: function(types) {
var type = [];
//console.log(typeof type); []方式創(chuàng)建的數(shù)組,其typeof類型為object
//如果需要判斷類型的話 還是用Object.prototype.toString.call(type) == "[object Array]"來(lái)判斷吧。
for(var i=0, it; it = types[i++];) {
type.push(typeof it);
}
return type.join(",");
},
//添加完所有的重載函數(shù)以后,調(diào)用該方法來(lái)創(chuàng)建重載函數(shù)。
//@param fc<String> 重載函數(shù)的方法名。
load:function(fc) {
var self = this, args, len, types;
this.scope[fc] = function() { //將指定作用域的指定方法 設(shè)為重載函數(shù)。
args = Array.prototype.slice.call(arguments); //將參數(shù)轉(zhuǎn)換為數(shù)組。
len = args.length;
types = self.checkTypes(args);
//console.log(self.list);
if(self.list[len + types]) { //根據(jù)參數(shù)數(shù)量調(diào)用符合的重載方法。
self.list[len + types].apply(self.scope, args); //這里指定了作用域和參數(shù)。
}else if(self.list[len]){
self.list[len].apply(self.scope, args)
}else {
throw new Error("undefined overload type");
}
}
}
};

下面是示例:
復(fù)制代碼 代碼如下:
var s = {};
new KOverLoad(s) //設(shè)置方法綁定的位置。命名空間?
.add(function(a) {
console.log("one",a,this)
},["string"])
.add(function(a,b) {
console.log("two",a,b,this)
},["string","string"])
.add(function(a,b,c) {
console.log("three",a,b,c,this)
},["string", "number", "string"])
.add(function(a,b,c,d) {
console.log("four",a,b,c,d,this)
})
.load("func"); //在這里的參數(shù)就是要?jiǎng)?chuàng)建的重載函數(shù)的方法名稱。
s.func("a","b");

JavaScript技術(shù)添加JavaScript重載函數(shù)的輔助方法2,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本成熟bbxxxxxxxx| 爱情岛论坛网亚洲品质 | 欧美日韩精品一区二区三区高清视频 | 牛牛在线国产精品 | 亞洲人妻AV無碼在線視頻 | 国内精品久久人妻无码HD浪潮 | 无码人妻少妇色欲AV一区二区 | 青青草视频在线ac | 涩涩涩涩爱网站 | 久久一本综合 | 精品国产一区二区三区久久影院 | 小伙无套内射老女人 | 大香网伊人久久综合网2020 | 偷偷要色偷偷 | 日本伦理片 中文字幕 | 娇妻归来在线观看免费完整版电影 | 一本道无码字幕在线看 | 伊人久久影院大香线蕉 | 色男人的天堂久久综合 | 亚洲 欧美 日本 国产 高清 | 在线播放一区 | 杨幂视频在线观看1分30秒 | 久久中文字幕亚洲精品最新 | 国产国拍亚洲精品永久软件 | 贵妇局长的蕾丝乳罩 | 在线看片福利无码网址 | 里番acg纲手的熟蜜姬训练场 | 91精品国产高清久久久久久 | 中文字幕人成乱码熟女APP | 亚洲精品久久久久久久蜜臀老牛 | 暖暖视频免费高清在线观看 视频 | 99久在线国内在线播放免费观看 | 纯肉高H啪短文合集 | 国产传媒18精品免费观看 | 亚洲无吗视频 | 成人网18免费韩国 | 正能量不良WWW免费窗口 | 国产偷国产偷亚洲高清人乐享 | YELLOW在线观看高清视频免费 | 国精产品999一区二区三区有限 | 亚洲精品久久久WWW游戏好玩 |