我正在开发一个使用vanilla JS进行DOM操作的主要方法的项目,最后我得到了大量的实用程序/辅助函数来包装DOM方法以保持一致性和一些额外的效果。
我最终得到了许多像这样的类似助手:
export const containsClass = (el, class) => {
return el.classList.contains(class)
}
export const selectAll = (class) => {
return [...document.querySelectorAll(class)]
}
我正在考虑使用类似库的方法来做这样的事情:
const myHelpers = (class, el) => {
return new Mono.prototype.init(class, el)
}
myHelpers.prototype = {
init: (class, el) => {
this.class = class
this.el = el
}
selectAll: (class) => {
return [...document.querySelectorAll(class)]
}
}
export const someShortAlias = myHelpers.prototype
(请注意,代码是通过Webpack捆绑的,我使用的是导入/导出语句,这就是我没有选择IIFE的原因)
我的想法是,这将清除全局名称空间并使代码更有条理。正如评论中指出的那样,由于我使用模块,因此无法清除命名空间。
所以我想尝试这个的原因仅仅是实验性的。但是我之前没有使用过这种方法,我不确定这样做是否会影响整体评估性能或导致其他问题。所有方法都运行正常,我只是在寻找改进第二种方法的建议。