首页 > 解决方案 > 如何使用变量访问 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

标签: javascriptfunctionproperties

解决方案


能够使其工作,我将所有内容转换为字符串并使用 eval 函数调用它:

     let test={
        a:function(tmp){
          document.write(tmp)
        }
      }
    let functn='a("hello")';
    eval(Object.keys({test})[0]+'.'+functn) 


推荐阅读