
40
|
第
2
章
模块化原则
$('{div}')
// <- Uncaught Error: unrecognized expression: {div}
除了重载之外,
jQuery
还提供了大量可选参数。虽然重载就是以不同的方
式接受一种特定的输入,但可选参数有不同的用途,其中之一就是增加一
个函数以支持更多用例。
关于可选参数有一个很好的例子,就是原生的
DOM
fetch
API
。在下面的
代码片段中,有两个
fetch
调用。第一个只接收我们想要获取的
HTTP
资
源的字符串,假设所使用的是
GET
方法。在第二个示例中,我们指定了第
二个参数,并指出我们想使用
HTTP
DETELE
方法 :
await fetch('/api/users')
await fetch('/api/users/rob', {
method: 'DELETE'
})
假设作为
fetch
的
API
设计人员,我们最初只是将它设计为一种
GET
${resource}
的方法。当我们需要选择
HTTP
方法时,可以避免使用
options
对象,并直接访问
fetch(resource, verb)
重载。虽然满足了我们
的特殊需求,但这是一种目光短浅的做法。一旦收到要配置其他东西的需求,
我们就需要同时支持
fetch(resource, verb)
和
fetch(resource, options)
重载,这样才能避免破坏向后兼容性。更糟糕的是,我们可能会引入第三
个参数来配置下一个需求。很快,我们就会得到一个
API
,比如臭名昭著
的
KeyboardEvent#initKeyEvent ...