Javascript 分组/嵌套get函数

Javascript 分组/嵌套get函数,javascript,webdriver-io,Javascript,Webdriver Io,我正在扩展(很抱歉来自其他语言的错误名称,我是JS新手)页面对象,添加了很多函数,例如firstLevelFunction1和firstLevelFunction2。我的目标是对这些函数进行分组,这样我就可以像这样通过点访问它们:firstLevelGroup.secondLevelFunction1。我以与firstLevelFunction相同的方式创建了firstLevelGroup。函数testLevels只是验证不同级别上的行为,当我调用它时,输出是: 第一级功能1 一级功能2 {ge

我正在扩展(很抱歉来自其他语言的错误名称,我是JS新手)
页面
对象,添加了很多函数,例如
firstLevelFunction1
firstLevelFunction2
。我的目标是对这些函数进行分组,这样我就可以像这样通过点访问它们:
firstLevelGroup.secondLevelFunction1
。我以与
firstLevelFunction
相同的方式创建了
firstLevelGroup
。函数
testLevels
只是验证不同级别上的行为,当我调用它时,输出是:

第一级功能1
一级功能2
{get:[函数:get]}
{get:[函数:get]}

我希望:

第一级功能1
一级功能2
第二级功能1
二级职能2

我的代码:

let Page=require('./../Page')
让JsTestingPage=Object.create(第{
firstLevelFunction1:{get:function(){return'第一级函数1'}},
firstLevelFunction2:{get:function(){return'第一级函数2'}},
firstLevelGroup:{get:函数(){
返回{
第二级功能1:{
get:function(){
返回“第二级函数1”
}
},
第二级功能2:{
get:function(){
返回“第二级函数2”
}
}
}
}
},
testLevels:{value:function(){
console.log(this.firstLevelFunction1)
console.log(this.firstLevelFunction2)
console.log(this.firstLevelGroup.secondLevelFunction1)
console.log(this.firstLevelGroup.secondLevelFunction2)
}}
})
module.exports=JsTestingPage
我还尝试了其他版本,但没有成功。上面的方法至少不会返回错误

请告诉我如何处理组功能。另外,可以随意说,对函数进行分组毫无意义:)

顺便说一句,这个结构(第一级)或多或少来自webdriver.io框架。将函数分组到第二级是我的想法,目的是使文件更加清晰和结构化

发生这种情况是因为您返回了一个对象初始值设定项,
get
成为一个普通的方法名,它不会创建内部对象的getter。若要解决此问题,请将返回的对象包装在
object.create(null,{…})
(或者使用更有意义的原型,如果提供的话),您将得到预期的结果

让JsTestingPage=Object.create(null{
第一级功能1:{
get:function(){
返回“第一级功能1”;
}
},
第一级功能2:{
get:function(){
返回“一级函数2”;
}
},
第一级组:{
get:function(){
返回Object.create(null{
第二级功能1:{
get:function(){
返回“二级函数1”;
}
},
第二级功能2:{
get:function(){
返回“二级函数2”;
}
}
});
}
},
测试级别:{
值:函数(){
console.log(this.firstLevelFunction1);
console.log(this.firstLevelFunction2);
console.log(this.firstLevelGroup.secondLevelFunction1);
console.log(this.firstLevelGroup.secondLevelFunction2);
}
}
});

JsTestingPage.testLevels()感谢您快速准确的回答。它按预期工作。然后我必须决定它是否真的更清楚。如果你想,请把它作为一个答案添加进来,这样我就可以投票并接受它。关于分号,我来自Java,对我来说,分号也更清楚。但这是我公司的政策,我必须适应(eslint下划线分号)嗯。。。这是一个糟糕的策略,省略分号会引入难以调试的bug。当我进一步学习JS时,我会尝试改变它。现在我是新手,没有任何影响力”_(ツ)_/谢谢你的帮助和建议。