依賴注入的代碼簡(jiǎn)單實(shí)現(xiàn), 函數(shù)可以根據(jù)自己需要的參數(shù)調(diào)用參數(shù)渺尘。
這個(gè)僅僅是一種實(shí)現(xiàn)方式。
- ja本質(zhì)上實(shí)現(xiàn)就是说敏,
1.讓函數(shù)轉(zhuǎn)化成字符串
2.根據(jù)正則把函數(shù)的參數(shù)提取出來(lái)鸥跟。
3.然后用調(diào)用參數(shù)給函數(shù)自己用。
var scope = {
a: 12,
b: 20,
c: 50,
d: 60
};
//函數(shù)寫什么參數(shù)盔沫, 就可以從scope里面得到此參數(shù)医咨,并不是調(diào)用者決定的。
function show(a, b, c) {
console.log(arguments.length);
console.log(a, b, c);
}
var str = show.toString(); //方法轉(zhuǎn)成字符串
str = str.split('{')[0].match(/\(.*\)/)[0].replace(/\s+/g, ''); //用分割和正則獲取 參數(shù)字符串,剔除里面的空格
str = str.substring(1, str.length - 1); // 把括號(hào)去掉
var arr = str.split(','); //參數(shù)裝進(jìn) 數(shù)組里
//找出相應(yīng)的參數(shù)
var args = [];
for (var i = 0; i < arr.length; i++) {
args[i] = scope[arr[i]];
}
//傳參架诞,調(diào)用函數(shù)拟淮。
show.apply(null, args);
個(gè)人博客: www.liangtongzhuo.com