我正在开发一个 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”关键字?这是否会以某种方式导致一些围绕内存访问越界的运行时错误?
我能够成功构建并运行代码。
好。 这表明您的代码正在运行。
_但是,
类中的上述字段somethingObj
是否正确使用了“this”关键字?MyContext
是的,正确使用它。
这会以某种方式导致一些关于越界内存访问的运行时错误吗?
不。 您没有执行任何会越界访问内存的不安全操作。 如果此代码确实发生了此类错误,则表明存在编译器错误,应在 AssemblyScript GitHub 存储库上将其报告为问题。
this
指的是当前类的实例。 在您的示例中,当构造 MyContext
时,将使用默认值实例化 somethingObj
字段。 您可以通过构造另一个对象 Something
并将 MyContext
的当前实例(使用 this
)作为参数传递给构造函数来创建该值。
你的代码没问题。