บางครั้งเมื่อห่อหุ้มการควบคุมฟังก์ชั่น JS จำนวนมากจำเป็นต้องได้รับพารามิเตอร์โดยตรงที่ผ่านหรือพารามิเตอร์วัตถุดังนั้นเราจึงต้องตัดสินวัตถุแรกทุกครั้งดังนั้นเพื่ออำนวยความสะดวกในการห่อหุ้มฟังก์ชั่นที่นี่เราสามารถรับค่าพารามิเตอร์ในฟังก์ชันปัจจุบัน:
- - getArgs (diffcase) {// ส่งคืนวัตถุพารามิเตอร์ var result = new Object (); // รับฟังก์ชั่นการโทร var caller = arguments.callee.caller; if (caller == null || caller.arguments.length == 0) ผลลัพธ์ส่งคืน; // รับชุดพารามิเตอร์ของฟังก์ชั่น var matchs = caller.toString (). การจับคู่ (// s*function [/w/s]*/(([/w/s,]*)/)/); if (matchs == null) ผลการส่งคืน; var argarray = จับคู่ [1] .split (","); // รับวัตถุพารามิเตอร์ var params = caller.arguments [0]; var index = typeof (params) == "วัตถุ"? 1: 0; if (index == 1) {สำหรับ (var p ใน params) {สำหรับ (var i = 0; i <argarray.length; i ++) {var arg = argarray [i] .trim (); if (diffcase) {ถ้า (arg == p) {ผลลัพธ์ [arg] = params [p]; หยุดพัก; }} else {if (arg.tolocalelowercase () == p.tolocalelowerCase ()) {ผลลัพธ์ [arg] = params [p]; หยุดพัก; }}}}}} // พารามิเตอร์หลายตัวเขียนทับพารามิเตอร์ที่ส่งผ่านโดยวัตถุสำหรับ (var i = index; i <argarray.length && i <caller.arguments.length; i ++) ผลลัพธ์ [argarray [i] .trim () ผลตอบแทนผลลัพธ์;}ตัวอย่างการโทร:
// การทดสอบฟังก์ชั่นฟังก์ชั่นการทดสอบ (ชื่อ, อายุ) {// รับพารามิเตอร์วัตถุ var args = getArgs (); การแจ้งเตือน ("ชื่อ:" + args.name + ", อายุ:" + args.age);} // การทดสอบการทดสอบโทร ("จางซาน", 25); ทดสอบ ({ชื่อ: "Li Si", อายุ: 30}); ทดสอบ ({ชื่อ: "วังวู"}, 18);