汇编脚本中“this”的正确用法

问题描述 投票:0回答:1

我正在开发一个 AssemblyScript 应用程序。代码的构造方式需要在另一个类的构造函数中传递一个类的实例。例如:

class Something {

  constructor(private context: MyContext) { }

  testMethod(): void {
    //Some logic which uses variables and methods from context class  
    let a: this.context.getSomething();
  }
}

class MyContext {
  
  //Is below a correct usage of 'this'?
  somethingObj: Something = new Something(this);

  myMethod(): void {
    //Some logic which uses somethingObj
    this.somethingObj.testMethod()
  }
  
}

我能够成功构建并运行代码。但是,上述

somethingObj
类中的字段
MyContext
是否正确使用了“this”关键字?这是否会以某种方式导致一些围绕内存访问越界的运行时错误?

typescript assemblyscript
1个回答
0
投票

答案:

我能够成功构建并运行代码。

好。 这表明您的代码正在运行。

_但是,

somethingObj
类中的上述字段
MyContext
是否正确使用了“this”关键字?

是的,正确使用它。

这会以某种方式导致一些关于越界内存访问的运行时错误吗?

不。 您没有执行任何会越界访问内存的不安全操作。 如果此代码确实发生了此类错误,则表明存在编译器错误,应在 AssemblyScript GitHub 存储库上将其报告为问题。

说明:

this
指的是当前类的实例。 在您的示例中,当构造
MyContext
时,将使用默认值实例化
somethingObj
字段。 您可以通过构造另一个对象
Something
并将
MyContext
的当前实例(使用
this
)作为参数传递给构造函数来创建该值。

你的代码没问题。

© www.soinside.com 2019 - 2024. All rights reserved.