从 JS class 获取字段 (属性) 初始值
Get field (property) initial values from JS class
是否可以从 class 对象中恢复分配给 class 字段(属性?不确定最佳 js 术语。)的值。例如,假设我有以下 class:
class Foo {
bar = [1, 2 ,3]
constructor() {
this.bar.pop();
this.bar.pop();
}
}
我希望能够以编程方式恢复 bar 的初始 ([1,2,3]) 值,即使它在构造函数中被覆盖最好 没有 修改现有的 class Foo.
最初的动机是,当 运行 测试复杂的 class 初始化序列时,复制并保持所有初始化值同步是一件很痛苦的事情。但是,我意识到我并不真正理解底层对象模型方面发生了什么,所以我也很想知道为什么。 class 字段是否在某处的原型对象或构造函数上设置了一些 属性?
如果修改变量的卷影副本,
或
您可以将弹出的项目存储在另一个变量中。
如
class Foo {
bar = [1, 2 ,3];
deleted = [];
constructor() {
deleted = this.bar.pop();
}
}
小心覆盖已删除
are class fields setting some property on a prototype object
没有。它们无法从 class 对象访问。
or constructor somewhere?
是的,字段是在构造函数中创建属性的语法糖。您的代码相当于
class Foo {
constructor() {
this.bar = [1, 2 ,3];
this.bar.pop();
this.bar.pop();
}
}
是否可以从 class 对象中恢复分配给 class 字段(属性?不确定最佳 js 术语。)的值。例如,假设我有以下 class:
class Foo {
bar = [1, 2 ,3]
constructor() {
this.bar.pop();
this.bar.pop();
}
}
我希望能够以编程方式恢复 bar 的初始 ([1,2,3]) 值,即使它在构造函数中被覆盖最好 没有 修改现有的 class Foo.
最初的动机是,当 运行 测试复杂的 class 初始化序列时,复制并保持所有初始化值同步是一件很痛苦的事情。但是,我意识到我并不真正理解底层对象模型方面发生了什么,所以我也很想知道为什么。 class 字段是否在某处的原型对象或构造函数上设置了一些 属性?
如果修改变量的卷影副本,
或
您可以将弹出的项目存储在另一个变量中。
如
class Foo {
bar = [1, 2 ,3];
deleted = [];
constructor() {
deleted = this.bar.pop();
}
}
小心覆盖已删除
are class fields setting some property on a prototype object
没有。它们无法从 class 对象访问。
or constructor somewhere?
是的,字段是在构造函数中创建属性的语法糖。您的代码相当于
class Foo {
constructor() {
this.bar = [1, 2 ,3];
this.bar.pop();
this.bar.pop();
}
}