ES2015 และใหม่กว่า
ใน ES2015 การทำลายโครงสร้างพารามิเตอร์สามารถใช้เพื่อจำลองพารามิเตอร์ที่มีชื่อ มันจะต้องมีผู้โทรผ่านวัตถุ แต่คุณสามารถหลีกเลี่ยงการตรวจสอบทั้งหมดภายในฟังก์ชั่นถ้าคุณยังใช้พารามิเตอร์เริ่มต้น:
myFunction({ param1 : 70, param2 : 175});
function myFunction({param1, param2}={}){
  // ...function body...
}
// Or with defaults, 
function myFunc({
  name = 'Default user',
  age = 'N/A'
}={}) {
  // ...function body...
}
ES5
มีวิธีที่จะเข้าใกล้สิ่งที่คุณต้องการ แต่มันขึ้นอยู่กับเอาท์พุทของFunction.prototype.toString [ES5]ซึ่งเป็นการนำไปใช้งานขึ้นอยู่กับระดับดังนั้นมันอาจไม่เข้ากันข้ามเบราว์เซอร์
แนวคิดคือการแยกชื่อพารามิเตอร์จากการแสดงสตริงของฟังก์ชันเพื่อให้คุณสามารถเชื่อมโยงคุณสมบัติของวัตถุกับพารามิเตอร์ที่เกี่ยวข้อง
การเรียกใช้ฟังก์ชันอาจมีลักษณะเช่นนั้น
func(a, b, {someArg: ..., someOtherArg: ...});
โดยที่aและbเป็นอาร์กิวเมนต์ตำแหน่งและอาร์กิวเมนต์สุดท้ายเป็นวัตถุที่มีอาร์กิวเมนต์ที่มีชื่อ
ตัวอย่างเช่น:
var parameterfy = (function() {
    var pattern = /function[^(]*\(([^)]*)\)/;
    return function(func) {
        // fails horribly for parameterless functions ;)
        var args = func.toString().match(pattern)[1].split(/,\s*/);
        return function() {
            var named_params = arguments[arguments.length - 1];
            if (typeof named_params === 'object') {
                var params = [].slice.call(arguments, 0, -1);
                if (params.length < args.length) {
                    for (var i = params.length, l = args.length; i < l; i++) {
                        params.push(named_params[args[i]]);
                    }
                    return func.apply(this, params);
                }
            }
            return func.apply(null, arguments);
        };
    };
}());
ซึ่งคุณจะใช้เป็น:
var foo = parameterfy(function(a, b, c) {
    console.log('a is ' + a, ' | b is ' + b, ' | c is ' + c);     
});
foo(1, 2, 3); // a is 1  | b is 2  | c is 3
foo(1, {b:2, c:3}); // a is 1  | b is 2  | c is 3
foo(1, {c:3}); // a is 1  | b is undefined  | c is 3
foo({a: 1, c:3}); // a is 1  | b is undefined  | c is 3 
การสาธิต
มีข้อเสียบางอย่างสำหรับวิธีการนี้ (คุณได้รับคำเตือน!):
- หากอาร์กิวเมนต์สุดท้ายเป็นวัตถุจะถือว่าเป็น "วัตถุอาร์กิวเมนต์ที่ระบุชื่อ"
 
- คุณจะได้รับอาร์กิวเมนต์มากที่สุดเท่าที่คุณกำหนดไว้ในฟังก์ชัน แต่บางข้ออาจมีค่า
undefined(ซึ่งแตกต่างจากการไม่มีค่าเลย) นั่นหมายความว่าคุณไม่สามารถใช้arguments.lengthเพื่อทดสอบว่ามีการส่งผ่านอาร์กิวเมนต์จำนวนเท่าใด 
แทนที่จะมีฟังก์ชั่นในการสร้างเสื้อคลุมคุณสามารถมีฟังก์ชั่นที่รับฟังก์ชั่นและค่าต่าง ๆ เป็นอาร์กิวเมนต์เช่น
call(func, a, b, {posArg: ... });
หรือยืดออกFunction.prototypeเพื่อที่คุณจะได้ทำ:
foo.execute(a, b, {posArg: ...});