javascript - 我可以链接不返回 this 的方法吗?
问题描述
我从 JavaScript 中的 OO 开始,我有一个包含以下方法的类:
count(element) {
return document.querySelectorAll(element).length;
}
get(element, occurence) {
return document.querySelectorAll(element)[occurence];
}
第一种方法分析 DOM 中存在多少指定类型的元素并返回数值结果,第二种方法作为 a 工作querySelector()
,有一些区别。
我想将这些方法与其他方法链接起来。但据我所知,方法必须返回this
被链接。我怎样才能链接这些方法?
解决方案
正如评论中所指出的,您似乎想要构建另一个类似于 jQuery 的 DOM 实用程序助手。这可能不是最好的主意。
根据您的评论,这里有 2 个包装器的示例,它们扩展了节点集合的行为和一个允许链接“add”方法的节点。
class MyDOMNodesWrapper {
constructor(elementSelector) {
this.set(elementSelector)
}
set(elementSelector) {
this.nodes = document.querySelectorAll(elementSelector)
return this
}
get(elementSelector, occurence) {
return new MyDOMNodeWrapper(this.set(elementSelector).nodes[occurence])
}
}
class MyDOMNodeWrapper {
constructor(node) {
this.node = node
}
add(elementType) {
return new MyDOMNodeWrapper(this.node.appendChild(document.createElement(elementType)))
}
}
const DOM = new MyDOMNodesWrapper
DOM.get('div', 5).add('p').node.textContent = "hello"
DOM.get('div', 0).add('div').add("div").add("h1").node.textContent = "Deeply chained"
DOM.get('div > p', 0).node.style.border = "1px solid red"
<div>0</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
推荐阅读
- excel - 如何确定客户与多个座席交谈所花费的时间
- python - 使用请求时握手错误
- r - Rfast 安装:/usr/lib/R/etc/Makeconf:168:目标“Norm.o”的配方失败
- sql - 寻找字符串函数或查询
- azure - Service Fabric 远程调试需要打开的端口
- angular - 如何在 Angular cli 项目中使用 @types/fhir
- c# - exe 找不到网络路径,但可以通过 Visual Studio 进行调试
- java - 缺少 Spring 反应式 Web 应用程序 POST 请求正文
- kubernetes - 如果一个应用程序需要在同一台主机上运行多个容器,为什么不只制作一个包含所需一切的容器呢?
- javascript - Javascript Bootstrap 表单元格和列值