依賴注入的程式碼簡單實現, 函式可以根據自己需要的引數呼叫引數。 這個僅僅是一種實現方式。
- ja本質上實現就是, 1.讓函式轉化成字串 2.根據正則把函式的引數提取出來。 3.然後用呼叫引數給函式自己用。
var scope = {
a: 12,
b: 20,
c: 50,
d: 60
};
//函式寫什麼引數, 就可以從scope裡面得到此引數,並不是呼叫者決定的。
function show(a, b, c) {
console.log(arguments.length);
console.log(a, b, c);
}
var str = show.toString(); //方法轉成字串
str = str.split('{')[0].match(/\(.*\)/)[0].replace(/\s+/g, ''); //用分割和正則獲取 引數字串,剔除裡面的空格
str = str.substring(1, str.length - 1); // 把括號去掉
var arr = str.split(','); //引數裝進 陣列裡
//找出相應的引數
var args = [];
for (var i = 0; i < arr.length; i++) {
args[i] = scope[arr[i]];
}
//傳參,呼叫函式。
show.apply(null, args);
複製程式碼
個人部落格: www.liangtongzhuo.com