拥有一个什么都不做的JavaScript函数有效吗



我正在处理三个文本框,它们获取数据并在jQuery自动完成下拉列表中显示。由于JavaScript对其对象非常灵活,并且没有接口。我做了一个API调用对象,然后接收一个函数对象,该对象扩展到它自己。

export function ApiCall(baseUrl, domain, path, options = {}) {
return {
baseUrl: baseUrl,
domain: domain,
path: path,
getData: function () {
return $.ajax({
url: this.fullUrl,
dataType: "json",
data: this.data,
success: function(data) { return data }
});
},
...options
}
}

这让我摆脱了大部分if块,因为我不再需要检查html ID。然而,我遇到了两个问题。一些对象需要有一个空函数,它什么都不做,而另一些对象则需要该函数来做一些事情。

addError: function () {
addError(this.title)
},

和其他

addError: () => { }

它正在生长,我担心这些物体可能有一些植入,而另一些则没有。现在,代码运行得很好,它已经清除了许多if块,这些块根据传递的html ID做不同的事情,并且只在对象上运行函数。这个有效吗?有更好的方法来实现这一点吗?有什么方法可以澄清这一点,使其可读性更强,不那么令人困惑吗?

是的,偶尔不会遇到任何操作函数,有时也没有办法绕过它们。但是,如果不编写任何操作函数,而是可以完全省略该函数,通常会更有意义。

如果有不在您控制范围内的代码无条件地调用对象的属性,但您不希望在这种情况下发生任何事情,那么没有操作函数是您唯一的选择。

但是,如果使用该对象的代码在你的控制之下,如果你在调用它之前检查该属性是否存在,你会发现你的代码会明显更精简。例如,如果给定一个对象,如果该属性存在,你想在它上调用addError,你可以这样做:

obj.addError?.();

允许您避免进行

addError: () => { }

无处不在。

如果你不得不使用非操作功能,这有点不幸(IMO(,但没什么大不了的。

相关内容

  • 没有找到相关文章

最新更新