在 JavaScript 函数调用中模拟命名参数
在 C# 等编程语言中,命名参数允许通过指定参数名称来进行清晰简洁的函数调用以及他们的价值观。然而,JavaScript 本身并不提供此功能。不过,有一些方法可以达到类似的效果。
ES2015 及更高版本:参数解构
随着 ES2015 的引入,参数解构提供了一种内置机制模拟命名参数。使用此功能,函数可以接受对象作为参数并提取特定属性作为命名参数:
function myFunction({ param1, param2 } = {}) { // ...function body... }
然后调用者可以传递具有所需参数值的对象:
myFunction({ param1: 70, param2: 175 });
ES5:Function.prototype.toString 和对象关联
在 ES5 中,一个 hackish 方法涉及使用 Function.prototype.toString() 解析函数签名并识别参数名称。这允许我们将对象的属性与相应的参数关联起来:
var func = parameterfy(function(a, b, c) { console.log('a is ' + a, ' | b is ' + b, ' | c is ' + c); }); func(1, 2, 3); // a is 1 | b is 2 | c is 3 func(1, {b:2, c:3}); // a is 1 | b is 2 | c is 3
但是,这种方法有缺点:
其他注意事项
作为创建函数包装器的替代方法,您还可以拥有接受函数和附加参数的函数,或扩展 Function。支持使用命名参数执行函数的原型。
以上是如何在 JavaScript 函数调用中模拟命名参数?的详细内容。更多信息请关注PHP中文网其他相关文章!