为什么eval()函数产生未定义的属性?

时间:2018-12-28 08:12:52

标签: javascript angular

我正在尝试获取对象数组内的属性值,该数组是对象的属性-> this.form.data.output [0] .output_total。数组名称,索引和属性名称作为参数传递并分配给变量。

我尝试使用eval(),并尝试登录到控制台,但结果为Cannot read property data of undefined

这是我调用函数的方式: (keyup)="form.onNumberChanges($event, 'output', 0, 'output_total')"

代码如下:

onNumberChanges: (event, params, index = null, properties = null) => {
  if (index !== null) {
    console.log(`this.form.data.${params}[${index}].${properties}`);
    /* I am checking if the string isn't proper, but its result as same as I expected --> this.data.output[0].output_total */

    console.log(eval(`this.form.data.${params}[${index}].${properties}`));
    /* resulting cannot read property data of undefined */
  }

我希望我得到的值在那个范围内(0/2/3 /或其他任何数字)。有什么线索吗?

2 个答案:

答案 0 :(得分:0)

尝试将函数更改为以下内容,因为未定义表单看起来像与上下文相关的问题

onNumberChanges(event, params, index = null, properties = null) {

并转换为

console.log(this.form.data[params][index][properties])

答案 1 :(得分:0)

您要在哪个浏览器中进行测试?

确保IE不支持ES6一些方法,例如this.form.data.${params}[${index}].${properties}