我可以链接不返回此方法的方法吗?

时间:2019-07-02 00:32:35

标签: javascript oop

我从JavaScript中的OO开始,我有一个具有以下方法的类:

 count(element) {
        return document.querySelectorAll(element).length;
}



 get(element, occurence) {
        return document.querySelectorAll(element)[occurence];
 }

第一种方法分析DOM中存在多少个指定类型的元素并返回数字结果,第二种方法以querySelector()的形式工作,但有一些区别。

我想将这些方法与其他方法链接在一起。但是据我所知,方法必须返回this才能被链接。如何链接这些方法?

2 个答案:

答案 0 :(得分:2)

只要方法返回具有方法的对象,就可以链接方法。例如,您可以编写:

str = yourObj.count(".classname").toString();
yourObj.get("#table tr", 3).appendChild(cell);

仅当要链接应用于原始对象的方法时,才需要使用return this;。通常,只有使用修改对象的方法才能完成此操作。它使您可以通过流畅的界面执行多种修改,例如:

yourObj.set("foo", "bar").set("baz", "quux");

应该先进行set()方法的修改,然后再进行return this;

如果该方法用于返回信息,那么它必须返回而不是this

答案 1 :(得分:2)

正如评论中指出的那样,您似乎想要构建另一个类似于jQuery的DOM实用程序帮助器。这可能不是最好的主意。

根据您的评论,这是2个包装程序的示例,这些包装程序扩展了节点集合和允许链接“ add”方法的节点的行为。

<Response>
  <Dial>
    <Conference startConferenceOnEnter="true" endConferenceOnExit="true">CALLERS_CONFERENCE_ID</Conference>
  </Dial>
</Response>
/connect