Angular/Typescript Eval 和这个

Fra*_*ank 6 eval this typescript angular

所以我在理解 eval 如何在打字稿/角度中使用它时遇到了问题。有人可以帮我让评估在这里工作吗?这只是一个演示程序,因此请忽略逻辑没有意义的事实。我只想让 eval 使用动态值更新动态数组。

https://stackblitz.com/edit/angular-pfyt7q?file=src%2Fapp%2Fapp.component.ts

export class AppComponent  {
  arrTest1 = [];
  arrTest2 = [];
  arrTest3 = [];

  constructor() {
    this.TestClass.Run("this.arrTest1 = [1];");
    this.TestClass.Run("this.arrTest2 = [2];");
    this.TestClass.Run("this.arrTest3 = [3];");
    console.log(this.arrTest1);   //Logs: [] (I want: [1])
    console.log(this.arrTest2);   //Logs: [] (I want: [2])
    console.log(this.arrTest3);   //Logs: [] (I want: [3])
  };

  TestClass = {
    Run : (pString) => {
      (0, eval)(pString);
      eval(pString);
    }
  };

}
Run Code Online (Sandbox Code Playgroud)

Meh*_*oha 3

PS:eval函数非常危险,应谨慎使用!

但是,因为我很友善,我将向您展示如何使您的代码工作:为了指定 eval 函数的上下文,您可以使用 call javascript 函数,如下所示:

this.TestClass.Run.call(this, "this.arrTest2 = [2];");
Run Code Online (Sandbox Code Playgroud)

PS2:通常,您不需要使用 eval 函数,即使不给出所需行为背后的整个代码,您也可以进行解释,并且人们可以帮助您弄清楚如何使其工作。

编辑:如果您想要的行为是拥有动态数组/值,您可以使用一个简单的对象并向其动态添加属性。假设您的对象是 A:您可以使用 A[varName] 动态创建对象属性。