javascript - 如何使用变量访问 javascript 对象的函数属性
问题描述
嗨考虑下面的代码
let test={
a:function(){
console.log('Hi')
}
}
有没有办法使用变量调用属性“a”?
这行得通,
let test={
a:function(tmp){
console.log(tmp)
}
}
let functn='a';
test[functn]("hello");
但无论如何都可以调用下面的代码:
let test={
a:function(){
console.log('Hi')
}
}
let functn='a("hello")';
test.function;
实际用例:
这是量角器系统测试相关的问题,
我有一个带有 css 定位器 [id=1] 的父对象,子元素有定位器 [id=1]>div , [id=1]>span 等。
所以当前父元素存储为
let parent = element(by.css('[id=1']) ,
孩子作为
let child1= element(by.css('[div]')
所以要找到父元素的所有子元素,函数是:
element(by.css('[id=1']).element(by.css('[div]')
因此,我不想再次编写定位器,而是要实现:
parent.child1
解决方案
能够使其工作,我将所有内容转换为字符串并使用 eval 函数调用它:
let test={
a:function(tmp){
document.write(tmp)
}
}
let functn='a("hello")';
eval(Object.keys({test})[0]+'.'+functn)
推荐阅读
- spring-mvc - 将选择下拉值分配给 Spring MVC 变量
- selenium - selenium webdriver中firefox上的无头模式没有响应
- python - 如何在包级别禁用 mypy 错误代码?
- java - Android 在配置更改时崩溃
- javascript - webpack 需要动态路径
- javascript - 猫鼬自定义_id
- python - Django 如何使用 AJAX 将数据发送到 django 调度程序 url?
- c - 这两种清洗缓冲液方法是否等效?
- python - 如何将 Opencv 结果发送到 node.js 服务器?
- db2 - DB2 encrypt field in select statement