首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将链式函数封装在单个函数中的Javascript

将链式函数封装在单个函数中的Javascript
EN

Stack Overflow用户
提问于 2015-11-17 04:52:34
回答 2查看 278关注 0票数 0

我正在使用intern进行一些javascript功能测试,并且希望开始将我的测试代码抽象出一些,以使其更加可重用。我不确定这是否可能,但我正在努力实现以下目标-

我的原始代码有以下格式-

代码语言:javascript
复制
this.remote.get(URL).setFindTimeout(5000).end()
.findByXpath(xpath).click().type('XXX').end().
.findByXpath(xpath).click().type('YYY').end()
.findByCSSSelector(css).click().doSelectBoxStuff().end() //and so on...

其中每一行可能是不同类型输入字段的输入。当进入这些不同的输入类型时,我试图将这些功能抽象到它们自己的函数中,比如-

代码语言:javascript
复制
this.remote.get(URL).setFindTimeout(5000).end()
    .enterTextBox('XXX')
    .enterTextBox('YYY')
    .enterSelectBox('ZZZ')

function enterTextBox(val){
    //execute  .findByXpath(xpath).click().type(val).end()
}

function enterSelectBox(val){
    //execute  .findByCSSSelector(css).click().doSelectBoxStuff().end()
}

这样的事有可能吗?如果是这样的话,在我的两个新函数中,什么叫.findByXPath(xpath)...等?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-17 04:58:00

你绝对可以。只需将函数作为参数传递给函数。您可以通过更改对象原型来定义对象的方法。因此,为了达到你想要的行为,你可以这样写:

代码语言:javascript
复制
// Ideally, replace this.remote.get(URL) with a base instance of the object
this.remote.get(URL).prototype.enterTextBox = function() {
    return this.findByXpath(xpath).click().type(val).end()
}

this.remote.get(URL).setFindTimeout(5000).end()
    .enterTextBox('XXX')

等等,关键是返回obj,这样它就可以被链接起来了。

票数 2
EN

Stack Overflow用户

发布于 2015-11-17 04:57:29

如果您想要执行链接,那么您的函数必须返回正在执行操作的“对象”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33749411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档